Python爬虫:BeautifulSoup库获取网站源码并爬取相应内容

作者: wanmidi 分类: python类,爬虫模块类 发布时间: 2019-08-12 00:18

BeautifulSoup库

pip install beautifulsoup4 #安装

并且需要lxml支持 但pip直接安装会报错

具体安装如 https://mi-di.cn/?p=36

import requests
from bs4 import BeautifulSoup

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36'} #给请求指定一个请求头来模拟chrome浏览器

web_url = 'https://mi-di.cn/'

r = requests.get(web_url, headers=headers)

soup = BeautifulSoup(html_doc, 'lxml') #声明BeautifulSoup对象

find = soup.find('p') #使用find方法查到第一个p标签

print("find's return type is ", type(find)) #输出返回值类型

print("find's content is", find) #输出find获取的值

print("find's Tag Name is ", find.name) #输出标签的名字

print("find's Attribute(class) is ", find['class']) #输出标签的class属性值

直接获取文本内容

即为 find.string

常用的find() find_all()

soup.find_all("title")

# [<title>The Dormouse's story</title>]

#

soup.find_all("p", "title")

# [<p class="title"><b>The Dormouse's story</b></p>]

#

soup.find_all("a")

# [<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>,

# <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>,

# <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>]

# soup.find_all(id="link2") # [<a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>] #

# <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>,

# <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>]

#

soup.find_all(id="link2")

# [<a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>]

#

name 参数:可以查找所有名字为 name 的tag。
attr 参数:就是tag里的属性。
string 参数:搜索文档中字符串的内容。
recursive 参数: 调用tag的 find_all() 方法时,Beautiful Soup会检索当前tag的所有子孙节点。如果只想搜索tag的直接子节点,可以使用参数 recursive=False 。

更多详情 https://www.cnblogs.com/Albert-Lee/p/6232745.html

一条评论
  • 米迪

    2019年8月3日 下午8:58

    headers = {‘User-Agent’: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36’} #给请求指定一个请求头来模拟chrome浏览器
    r = requests.get(web_url, headers=headers)
    print(r)
    print(r.text)

发表评论

电子邮件地址不会被公开。 必填项已用*标注