python网页数据抓取(【解析数据】使用浏览器上网,浏览器会把服务器返回来的HTML源代码 )

优采云 发布时间: 2022-01-11 22:03

  python网页数据抓取(【解析数据】使用浏览器上网,浏览器会把服务器返回来的HTML源代码

)

  【分析数据】

  使用浏览器上网,浏览器会将服务器返回的HTML源代码翻译成我们可以理解的东西

  在爬虫中,还应该使用可以读取 html 的工具来提取所需的数据。

  【抽取数据】是指从众多数据中选出我们需要的数据

  右键-显示网页的源代码,在这个页面搜索会更准确

  安装

  pip install BeautifulSoup4 (Mac 需要输入 pip3 install BeautifulSoup4)

  ++++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++

  分析数据

  

  在括号中输入两个参数,

  第0个参数必须是字符串类型;

  第一个参数是解析器。这是一个 Python 内置库:html.parser

   1 import requests

2

3 from bs4 import BeautifulSoup

4 #引入BS库

5

6 res = requests.get('https://localprod.pandateacher.com/python-manuscript/crawler-html/spider-men5.0.html')

7

8 html = res.text

9

10 soup = BeautifulSoup(html,'html.parser') #把网页解析为BeautifulSoup对象

11

12 print(type(soup)) #查看soup的类型 soup的数据类型是 soup是一个BeautifulSoup对象。

13

14 print(soup)

15 # 打印soup

  response.text 和汤打印出来的完全一样

  它们属于不同的类:前者是字符串,后者是已经解析的 BeautifulSoup 对象

  打印同理:BeautifulSoup对象在直接打印的时候会调用对象中的str方法,所以直接打印bs对象说明字符串是str的返回结果

  ++++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++

  提取数据

  

  find() 和 find_all()

  是 BeautifulSoup 对象的两个方法

  可以匹配html的标签和属性使用方式相同

  区别

  find() 只提取第一个满足要求的数据

  find_all() 提取所有符合要求的数据

   1 import requests

2

3 from bs4 import BeautifulSoup

4

5 url = 'https://localprod.pandateacher.com/python-manuscript/crawler-html/spder-men0.0.html'

6

7 res = requests.get (url)

8

9 print(res.status_code)

10

11 soup = BeautifulSoup(res.text,'html.parser')

12

13 item = soup.find('div') #使用find()方法提取首个元素,并放到变量item里。

14

15 print(type(item)) #打印item的数据类型

16

17 print(item) #打印item

18

19

20 200

21

22 #是一个Tag类对象

23

24 大家好,我是一个块

25

26

27

28

29

30 items = soup.find_all('div') #用find_all()把所有符合要求的数据提取出来,并放在变量items里

31

32 print(type(items)) #打印items的数据类型

33

34 print(items) #打印items

35

36

37 200

38

39 #是一个ResultSet类的对象

40

41 [大家好,我是一个块, 我也是一个块, 我还是一个块]

42

43 #列表结构,其实是Tag对象以列表结构储存了起来,可以把它当做列表来处理

  汤.find('div',class_='books')

  Class_在python语法中区别于class类,避免程序冲突

  也可以使用其他属性,比如样式属性等。

  括号中的参数:标签和属性可以使用,也可以同时使用,这取决于我们要从网页中提取的内容

<p> 1 import requests # 调用requests库

2

3 from bs4 import BeautifulSoup # 调用BeautifulSoup库

4

5 res = requests.get('https://localprod.pandateacher.com/python-manuscript/crawler-html/spider-men5.0.html')# 返回一个Response对象,赋值给res

6

7 html= res.text# 把Response对象的内容以字符串的形式返回

8

9 soup = BeautifulSoup( html,'html.parser') # 把网页解析为BeautifulSoup对象

10

11 items = soup.find_all(class_='books') # 通过定位标签和属性提取我们想要的数据

12

13 print(type(items)) #打印items的数据类型 #it*敏*感*词*类型是

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线