第一个爬虫程序
from urllib.request import urlopen
#请求的地址
url = 'https://www.yuque.com/dashboard/'
#发送请求
resp = urlopen(url)
#打印响应结果
print(resp.read().decode())
很简陋,就是将所有的语雀中的源代码全部返回。
然后就是学了一点Request封装url。
但主要的还是伪造响应头。
因为如果我们使用python去访问别人的服务器的话,对面日志中会留下我们的响应头,我们响应头那时候就叫我们的python版本号。但是如果就这样访问的话,是很容易被对面封禁的,所以我们要伪造我们的响应头。
我们可以将我们的响应头改成这个我们真实的响应头。
from urllib.request import Request,urlopen
# url = "https://www.baidu.com/"
url = "http://httpbin.org/get"
# 定义headers信息,伪造user-agent使自己的信息不被发现是程序执行
headers = {'User-Agent': "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.66 Safari/537.36"}
# 创建Request
req = Request(url,headers=headers)
# 发送请求
resp = urlopen(req)
# 打印结果
print(resp.read().decode())
get请求参数中不能够加入中文,如果需要中文,只能先进行转码。
from urllib.parse import quote
quote函数是对值进行转换,
例如quote(python爬虫)
还有一个是进行键值对转换的
from urllib.parse import urlencode
Urlencode
例如args = {'wd':"python爬虫"}
urlencode(args)
以下是我近期对喜马拉雅的爬虫
from urllib.request import Request,urlopen
from time import sleep
#构造url地址
for num in range(1,3):
if num ==1:
url = f"https://www.ximalaya.com/channel/19-139"
else:
url = f"https://www.ximalaya.com/channel/19-139/p{num}"
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.66 Safari/537.36'}
print(url)
#构造请求对象
req = Request(url,headers=headers)
#发送请求
resp = urlopen(req)
#获取响应
print(resp.getcode())
print(resp.read().decode()[:2000])
#休眠
sleep(1)