Python网络爬虫-编写第一个简单的网络爬虫
程序员文章站
2022-05-08 18:27:08
...
编写第一个简单的网络爬虫
我们将使用到requests
,如果你尚未在环境中安装,请执行下列命令:
pip install requests -i https://pypi.douban.com/simple/
定义要访问的目标url地址,例如打开下面url对应的网站可以检测出你的IP地址
url = 'https://2021.ip138.com/'
简单的向目标url发起请求,保存结果即为响应
try:
response = requests.get(url)
except Exception as e:
print(e)
可能会访问失败,这是因为我们的Python
程序直接请求对方网站,被检测出是来自Python
的请求,因此为了伪装好程序,假装自己是浏览器,我们需要用到一个重要的参数headers
来传入User-Agent
信息,用来告知对方服务器我们是个人畜无害的“浏览器”而已:
假装浏览器之后再次发起访问
response = requests.get(url,
headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36'
})
首先检查状态码,200代表至少网络请求成功返回内容了
response.status_code
# 在jupyter中可以利用HTML来直接渲染原始的html源码
from IPython.display import HTML
# 再次查看响应结果渲染出的网页内容
HTML(response.text)
有了爬取到的内容之后,假如我们需要从网页中提取出想要的内容,譬如这里我们想提取检测到的IP
地址,就需要对原始的网页html源码进行解析,下面我们查看上面获得的源码文本:
print(response.text)
可以看到返回的信息远远比渲染出的网页中看到的内容多得多,因为这才是每个网页背后真实的源码,浏览器读懂这些源码,才按照源码渲染出我们看到的互联网中丰富的大千世界,并且诸如此类的html源码都是有语法规则的,我们可以使用一些选择器工具在网页中定位到想要的元素进行内容提取
import re
# 提取的方式是多样的,你可以这样:
re.findall('>您的IP地址是:(.*?)<', response.text)
课后题目
通过今天的内容,我们对一个网络爬虫最基础的流程有了认识,我们之后的日程就会在此基础上拓宽详解每个环节常用到的知识与技巧。
下面请你完成的题目是参考今天的学习内容,对博客园首页( https://www.cnblogs.com/ )进行爬取,并提取出页面里所有的日期时间格式数据
import requests
from IPython.display import HTML
import re
url = 'https://www.cnblogs.com/'
try:
response = requests.get(url)
except Exception as e:
print(e)
response.status_code
# # 在jupyter中可以利用HTML来直接渲染原始的html源码
# # 再次查看响应结果渲染出的网页内容
# HTML(response.text)
# print(response.text)<span>2021-03-17 17:47</span>
re.findall('<span>(\d*-\d*-\d* \d*:\d*)<',response.text)
学习他人教程而来
上一篇: 【BZOJ 2152】聪聪可可 点分治
下一篇: Python实现简单的网络爬虫