爬虫步骤:
1.确定url地址
2.发送请求,获取响应
3.从响应对象中获取响应体中的数据
案例:爬取百度网页 ,并生成HTML文件
rt_01_爬取百度网页.py
# 可以借助urllib3 或者 requests库爬取网页
import urllib.request
# 爬取百度网页
# 导入urllib3模块
# 1.确定url地址
url = "http://www.baidu.com"
# 2.发送请求,获取响应
# 获取请求对象
request = urllib.request.Request(url)
# 借助请求对象发送请求
response = urllib.request.urlopen(request)
# print(response)
# 从响应对象中获取响应体中的数据
html = response.read()
print(html.decode("utf-8"))
# 把爬取到的html文件内容写入到文件
with open("baidu.html",mode="wb") as file:
file.write(html)
输出:
案例:爬取大众点评网页,并生成HTML文件
rt_02_requests爬取网页.py
# 借助requests爬取网页
import requests
# 爬取大众点评
# 1.确定爬取数据的url地址
url = "http://www.dianping.com"
# 2.借助requests发送请求,获取响应
response = requests.get(url)
print(response)
print(response.url)
print(response.status_code)
print(response.encoding)
# 获取响应体中的数据
html = response.content
html = response.text
print(html)
# 将数据写入到文件
with open("dianping.html",mode="w",encoding="utf-8") as file:
file.write(html)
输出:
案例:简单爬取北京新冠疫情信息
rt_03_网页数据的分析.py
步骤:
1.确定爬取网页url地址
2.在请求头中设置User-Agent,伪装自己的爬虫程序,把自己的爬虫程序伪装成一个浏览器访问的过程
3.发送请求,获取响应
4.解析页面内容,借助bs4库来实现
5.获取整个页面中的a标签
6.打印输出
# 网页数据的解析
import requests
from bs4 import BeautifulSoup
# 确定爬取数据的url地址
url = "http://wjw.beijing.gov.cn/wjwh/ztzl/xxgzbd/gzbdyqtb/"
# 在请求头中设置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
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"
}
# 发生请求,获取响应
response = requests.get(url,headers=headers)
print(response)
html = response.text
# print(html)
# 解析页面内容,借助bs4库来解析:pip install --user bs4
bs = BeautifulSoup(html)
# 获取整个页面中所有的a标签
content = bs.find_all(name="a",attrs={"target":"_blank"})
print(content)
for item in content:
print(item.text)
输出:
案例:爬取动态数据,以豆瓣网为例
rt_04_网页中动态加载数据的爬取.py
步骤:
1.确定爬取数据的url地址
2.创建浏览器对象
3.发生请求,获取响应
4.获取页面内容
5.解析有关电影的数据
from selenium.webdriver import Chrome
from selenium.webdriver.common.by import By
import time
# 豆瓣电影网页的数据是动态加载
# 需要借助自动化测试工具:借助selenium
# 1.确定爬取数据的url地址
url = "https://movie.douban.com/typerank?type_name=%E5%96%9C%E5%89%A7&type=24&interval_id=100:90&action="
# 2.创建浏览器对象
browser = Chrome()
# 3.发生请求,获取响应
browser.get(url)
# 4.获取页面内容
html = browser.page_source
print(html)
# 5.解析有关电影的数据
# //*[@id="content"]/div/div[1]/div[6]/div[1]/div/div/div[1]/span[1]/a
# 休眠一下
time.sleep(1)
content = browser.find_elements(by=By.XPATH, value='//*[@id="content"]/div/div[1]/div[6]/div/div/div/div[1]/span[1]/a')
print(content)
for item in content:
print(item.text)
输出: