当前位置: 首页 > news >正文

可以做高清思维导图的网站西安百度提升优化

可以做高清思维导图的网站,西安百度提升优化,我国旅游网站的建设,大连甘井子区政府网爬取网页数据(获取网页信息全过程) 1、爬取豆瓣电影的电影名称、导演、主演、年份、国家、评价 2、首先我们先爬取页面然后再获取信息 1、爬取网页源码 import requests from lxml import etree if __name__ __main__:#UA伪装head{User-Agent:Mozilla/…

爬取网页数据(获取网页信息全过程)

1、爬取豆瓣电影的电影名称、导演、主演、年份、国家、评价

2、首先我们先爬取页面然后再获取信息

        1、爬取网页源码
import requests
from lxml import etree
if __name__ == '__main__':#UA伪装head={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0'}#获取urlurl='https://img3.doubanio.com/cuphead/movie-static/charts/top_movies.b4c3a.css'#发送请求response=requests.get(url,headers=head)#返回数据类型cont_text=response.text# print(cont_text)#打印数据,用于查看是否爬取成功

上述代码即表示爬取了豆瓣电影那一页的网页源码

2、下面将去找想爬取的数据所在标签的位置

因为要爬取一整页面所有的电影而不是单个电影信息,所以需要找到该组电影标签的主标签,如下部分即可发现,将鼠标移到每个li标签下,都会对应左边的每个单独的电影

所以我们就可以通过for循环定位到每个li标签下然后在爬取每个li标签内的电影数据,

找到所有的li标签后在上一级去找有没有单独的属性class或者id,如果找到一个class内容,复制class对应属性的内容,长按Ctrl+F打开查找,看看是否是在总标签下是否是唯一的,这样可以避免去数每一个标签在什么位置,

如上图可发现上述的class对应的属性“grid_view”是独一无二的,那么可以直接通过多层地址直接到达这个标签

3、实操代码        

        通过以下代码即可获取到所有的电影名称,其中的div[2]表示这个div标签是在当前的上一级标签下是第2个标签,//表示属性定位直接定位到当前目录,./表示在当前目录下,/表示下一级目录,

import requests
from lxml import etree
if __name__ == '__main__':#UA伪装head={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0'}#获取url# url='https://img3.doubanio.com/cuphead/movie-static/charts/top_movies.b4c3a.css'url = 'https://movie.douban.com/top250'#发送请求response=requests.get(url,headers=head)#返回数据类型cont_text=response.text# print(cont_text)#打印数据,用于查看是否爬取成功#解析数据tree=etree.HTML(cont_text)#获取单个电影所对应标签的主标签# lst=tree.xpath('//ol[@class="grid_view"]/li')#即打印所有li标签下的内容ls1 = tree.xpath('//ol[@class="grid_view"]/li')# print(ls1)for li in ls1:  #通过循环遍历所有的li标签,即所有的电影数据name_book=li.xpath('./div/div[2]/div[1]/a/span[]/text()')  #通过text()打印数据print(name_book)

其打印结果为

4、返回结果处理

xpath返回的是列表,里面有很多不需要的符号,所以需要再对name_book=li.xpath('./div/div[2]/div[1]/a/span[1]/text()')这段代码在做处理,首先通过join函数去除括号,name_book="".join(li.xpath('./div/div[2]/div[1]/a/span[1]/text()'))

打印结果为

这就是我们需要的电影名字内容,下面将获取导演、、数据,通过下列代码获取这些信息

strs = ''.join(li.xpath(".//div[@class='bd']/p[1]/text()"))print(strs)

其输出结果为下列内容

但是有很多空格,同样需要对它进行处理,可以使用strip函数去除左右两边的空格

strs = ''.join(li.xpath(".//div[@class='bd']/p[1]/text()")).strip()print(strs)

但是我们需要的是单独的导演、主演、时间、国家、、,这些是一个完整的字符串,所以需要额外把这些字符串取出来进行额外处理,得到分开的单独数据:

比如取出第一段字符,那么首先可以发现有很多空格,所以使用strip去除,然后调用正则化去处理这段数据,代码如下,其中分别取出时间、国家、导演、主演、剧情

import re
strs="""导演: 弗兰克·德拉邦特 Frank Darabont   主演: 蒂姆·罗宾斯 Tim Robbins /...1994 / 美国 / 犯罪 剧情"""
#中文的正则取值:[\u4e00-\u9fa5]
a=strs.strip() #去除左右空格
time_film=re.match(r'([\s\S]+?)(\d+)([\s\S]+?)',a).group(2) #利用正则的分组关系去除第二组内容,即(\d+)数字的内容,即时间
country=''.join(a.split('/')[-2].split()) #利用/符号切割这个完整字符串,然后取出倒数第二个数据,即国家的数据
juqing=''.join(a.split('/')[-1].split())#利用/符号切割这个完整字符串,然后取出倒数第一个数据,即剧情的数据
daoyan=re.match(r'导演: ([A-Za-z\u4e00-\u9fa5·]+)(\s\S*?)',a).group(1) #使用中文的正则表达式得到导演主演的数据
zhuyan=re.match(r'([\s\S]+?)主演: ([A-Za-z\u4e00-\u9fa5·]+)([\s\S]+?)',a).group(2)
print(time_film)
print(country)
print(juqing)
print(daoyan)
print(zhuyan)

其输出结果如下:

即将那一大串字符串全部处理成了独立的我们需要的数据,然后只要把这些代码放入爬虫的那一部分即可,

import re
import requests
from lxml import etree
if __name__ == '__main__':#UA伪装head={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0'}#获取url# url='https://img3.doubanio.com/cuphead/movie-static/charts/top_movies.b4c3a.css'url = 'https://movie.douban.com/top250'#发送请求response=requests.get(url,headers=head)#返回数据类型cont_text=response.text# print(cont_text)#打印数据,用于查看是否爬取成功#解析数据tree=etree.HTML(cont_text)#获取单个电影所对应标签的主标签# lst=tree.xpath('//ol[@class="grid_view"]/li')#即打印所有li标签下的内容ls1 = tree.xpath('//ol[@class="grid_view"]/li')# print(ls1)for li in ls1:  #通过循环遍历所有的li标签,即所有的电影数据name_book="".join(li.xpath('./div/div[2]/div[1]/a/span[1]/text()')) #通过text()打印数据# print(name_book)strs = ''.join(li.xpath(".//div[@class='bd']/p[1]/text()")).strip()# print(strs)a = strs.strip()time_film = re.match(r'([\s\S]+?)(\d+)([\s\S]+?)', a).group(2)country = ''.join(a.split('/')[-2].split())juqing = ''.join(a.split('/')[-1].split())daoyan = re.match(r'导演: ([A-Za-z\u4e00-\u9fa5·]+)(\s\S*?)', a).group(1)zhuyan = re.match(r'([\s\S]+?)主演: ([A-Za-z\u4e00-\u9fa5·]+)([\s\S]+?)', a).group(2)print(time_film)print(country)print(juqing)print(daoyan)print(zhuyan)

其得到的结果如下,可以发现其结果有错误,

如下图可以发现这部电影没有主演,只有一个主字,那么就说明我们的正则有缺陷,但是我们也可以跳过这一个电影,因为在大批量的电影中总会有那么一个两个不一样的区别,不能将所有的数据都拿出来额外在做正则,这样也不切实际,所以我们可以使用try语句去判断一下,然后跳过这一步电影的数据

5、完整代码如下

import re
import requests
from lxml import etree
if __name__ == '__main__':fp=open('./douban_film.txt','w',encoding='utf-8') #创建一个文件用来存放电影数据#UA伪装head={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0'}#获取url# url='https://img3.doubanio.com/cuphead/movie-static/charts/top_movies.b4c3a.css'url = 'https://movie.douban.com/top250'#发送请求response=requests.get(url,headers=head)#返回数据类型cont_text=response.text# print(cont_text)#打印数据,用于查看是否爬取成功#解析数据tree=etree.HTML(cont_text)#获取单个电影所对应标签的主标签# lst=tree.xpath('//ol[@class="grid_view"]/li')#即打印所有li标签下的内容ls1 = tree.xpath('//ol[@class="grid_view"]/li')# print(ls1)for li in ls1:  #通过循环遍历所有的li标签,即所有的电影数据name_book="".join(li.xpath('./div/div[2]/div[1]/a/span[1]/text()')) #通过text()打印数据# print(name_book)strs = ''.join(li.xpath(".//div[@class='bd']/p[1]/text()")).strip()# print(strs)a = strs.strip()time_film = re.match(r'([\s\S]+?)(\d+)([\s\S]+?)', a).group(2)try:country = ''.join(a.split('/')[-2].split())juqing = ''.join(a.split('/')[-1].split())daoyan = re.match(r'导演: ([A-Za-z\u4e00-\u9fa5·]+)(\s\S*?)', a).group(1)zhuyan = re.match(r'([\s\S]+?)主演: ([A-Za-z\u4e00-\u9fa5·]+)([\s\S]+?)', a).group(2)except Exception as e:passprint(name_book+"#"+time_film+"#"+daoyan+"#"+zhuyan+"#"+country+"#"+juqing+"\n")#讲捕获的数据全部写入文件内fp.write(  name_book + "#" + time_film + "#" + daoyan + "#" + zhuyan + "#" + country + "#" + juqing + "\n")fp.close()

左侧发现存放所创建的文本文件,打开后可得到存进去的数据:

http://www.khdw.cn/news/66158.html

相关文章:

  • 做网站如何推广买量保定网站seo
  • 包头 网站制作百度网页版主页
  • 网站做百度推广企业网络营销方案策划
  • 营销公司官网谷歌搜索引擎优化seo
  • 做跨境的网站百度知道提问
  • 仿新浪微博网站代码免费关键词排名优化
  • 绵阳网站排名旺道seo系统
  • 海淀做网站的网络公司ks数据分析神器
  • 网站服务器做下载链接餐饮营销案例100例
  • 扶沟县建设局网站百度搜索榜
  • 企业网站的规划与建设cps广告联盟平台
  • 网站开发的毕业论文构建新发展格局
  • 电商食品网站建设市场seo是什么意思
  • 怎样做动漫照片下载网站广州网络推广专员
  • 个人注册域名和公司注册域名区别国内做seo最好的公司
  • 十大小说网站排名百度电话客服24小时人工
  • 没公司怎么做网站做seo要投入什么
  • 国外网站博客网站也可以做引流百度seo营销推广
  • 重庆便宜网站建设万网域名查询工具
  • 北京商城网站建设报价单google官网
  • 时代强个人网站如何自己开发网站
  • 苏州网站开发建设方案武汉网络推广网络营销
  • 北京网站建设webmeng福州网络推广运营
  • discuz!网站模板抚州seo排名
  • 莱芜新闻网今日莱芜头条北京seo营销培训
  • 做爰全过程免费的教网站seo小白入门教学
  • 博客网站开发技术网站制作网站推广
  • 有没有做机械加工的网站网站seo优化怎么做
  • 沂南做网站广州今日头条新闻
  • 台州市建站公司中国新闻网发稿