本博客主要用来记录一下学习过程中所使用的代码:
我们以豆瓣电影网为例子,来爬取上面的数据:
链接:豆瓣电影
import requests
url="https://movie.douban.com/"
resp=requests.get(url)
resp.encoding="utf-8"
#print(resp.text)
f=open("douban.html","w")
f.write(resp.text)
print("over")
resp.close()#关闭会话,防止后续使用爬虫出现无法访问的情况
以上是一个非常基本并且简单的爬取网页源代码的爬虫。
但是我们可以发现爬取下来在douban.html中是没有任何东西的,所以这个时候我们大概率是被监测到不是人工在进行网页的访问,而是自动化程序,这个时候就需要我们进行伪装一下,最基础的伪装就是User Agent的伪装,查看我们自己的UA需要使用浏览器自带的抓包工具,按下F12,然后在Network选项中重新刷新网页,在抓获的包中,我们就能够获得我们想要的UA信息
import requests
url="https://movie.douban.com/"
#反爬可以在这里加一个头
dic={# 这里dic代表的时请求头,是一个字典变量
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36 Edg/92.0.902.62"
}
#然后下面的请求改一下就可以了
resp=requests.get(url,headers=dic)
#resp=requests.get(url)
resp.encoding="utf-8"# windows系统必须加这个否则读取中文的时候可能会出现乱码的情况
#print(resp.text)
f=open("douban.html","w",encoding="utf-8")#windows系统一定要写encoding="utf-8"
f.write(resp.text)
print("over")
resp.close()#关闭会话,防止后续使用爬虫出现无法访问的情况
这个时候我们加入了这些以后,可以发现我们可以正常爬取东西了。
同理如果我们要像浏览器传入数据然后爬取相应的内容,我们也同上,首先先用浏览器自带的抓包工具检查所发送包中的变量名称,然后将这些变量存在一个新建的字典中,最后在调用request.get的时候将这个字典赋值给data,就可以实现查询我们想要查询的东西了,具体实现方法见如下代码:
import requests
url="输入目标网址"
#反爬可以在这里加一个头
dic={# 这里dic代表的时请求头,是一个字典变量
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36 Edg/92.0.902.62"
}
dat={
"输入变量1名称": "输入变量1的值",
"输入变量2名称": "输入变量2的值"
#·········
}
#然后下面的请求改一下就可以了
resp=requests.get(url,headers=dic,data=dat)
#resp=requests.get(url)
resp.encoding="utf-8"# windows系统必须加这个否则读取中文的时候可能会出现乱码的情况
#print(resp.text)
f=open("douban.html","w",encoding="utf-8")#windows系统一定要写encoding="utf-8"
f.write(resp.text)
print("over")
resp.close()