当前位置:   article > 正文

Python安装第三方库requests和lxml的使用方法_python requests 与 re lxml结合使用

python requests 与 re lxml结合使用

1.导入类库

发起网络请求工具 requests
安装第三方库 pip install requests 类库名
安装数据转换类库 pip install lxml

#1.导入类库
import requests #发起网络请求工具 
from lxml import etree  # 数据转换类库 
import csv  # 文字类库
  • 1
  • 2
  • 3
  • 4

2.抓取数据,寻找url资源路径

url = 'https://movie.douban.com/top250?start=25&filter='
  • 1

3.request 请求

请求头 request 请求的一部分,伪装头才符合https协议正常访问,否则会触发反爬虫机制
 headers={} 括号应该从哪里抓取数据?谷歌浏览器 通行证 User-Agent
  • 1
  • 2
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36'}
  • 1
  • 2

4.访问网站拿到数据,打印网页源代码

reponse = requests.get(url=url, headers=headers)
# print(reponse.text)
  • 1
  • 2

5.数据文本转换成HTML

1. 接下来要把这个数据文本转换成HTML,采用reponse
2. 首先拿到装所有数据的大盒子div,通过data中的方法,就相当	于一个搜索方式给到我们就叫它xpath,
3. 这个地方该怎么去定位呢?//双斜杠表示定位,@符号表示定位到第二位,就可以把数据逐一取出来,
4.  把取出来的数据定义成一个对象集合moiveItemList,相当于一个电影表单
  • 1
  • 2
  • 3
  • 4
data = etree.HTML(reponse.text)
movieItemList = data.xpath('//div[@class="info"]')
  • 1
  • 2

6.for循环

准备一个容器来装每一部电影的数据,首先声明一个movieList电影列表,使用for循环要从电影列表中把每一部电影的数据找出来。
  • 1
movieList = []

for movieItem in movieItemList:
  • 1
  • 2
  • 3
准备一个字典来保存每一部电影的信息
  • 1
    movieDict = {}
  • 1

7.解析数据

获取标题文本
  • 1
  title = movieItem.xpath('div[@class="hd"]/a/span[@class="title"]/text()')
  • 1
获取其他标题
  • 1
othertitle = movieItem.xpath(
        'div[@class="hd"]/a/span[@class="other"]/text()')
  • 1
  • 2
 获取链接,也就是电影的一个详细介绍,拿到a标签下面的href,[0]表示取第一个元素。
  • 1
  Link = movieItem.xpath('div[@class="hd"]/a/@href')[0]
  • 1
 获取电影评分
  • 1
 star = movieItem.xpath(
        'div[@class="bd"]/div[@class="star"]/span[@class="rating_num"]/text()')[0]
  • 1
  • 2
 获取电影简介
  • 1
quote = movieItem.xpath('div[@class="bd"]/p[@class="quote"]/span/text()')
  • 1
填充数据到电影字典
movieDict,title就相当于把字符串拼接转一下,为什么要转呢?这个地方就等于title加上othertitle,填充标题到字典。
  • 1
  • 2
 	movieDict['title'] = ''.join(title+othertitle)
    movieDict['Link'] = Link
    movieDict['star'] = star
    movieDict['quote'] = quote
  • 1
  • 2
  • 3
  • 4
打印电影字典
  • 1
   # print(movieDict)
  • 1

8.将每部电影填充进大容器movieList

    movieList.append(movieDict)
  • 1

9.通过文件I/O保存数据

with open('doubanMovie.csv', 'w', encoding='utf-8', newline='')as f:
    writer = csv.DictWriter(f, fieldnames=['title', 'star', 'quote', 'Link'])
    writer.writeheader()
    for each in movieList:
        writer.writerow(each)
  • 1
  • 2
  • 3
  • 4
  • 5
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/728891
推荐阅读
相关标签
  

闽ICP备14008679号