今天应公司要求,爬一个网站:http://yjglj.lsz.gov.cn/xxgk/fdzdgknr/tzgg/index.html ( 法定主动公开内容 下的 通知公告 模块)
注:类似网站
第一次进入这个网站时,页面数据一直加载不出来,以为是网卡了,没有在意
接着我重新通过导航栏进入网站,果然网站就好了(此时我还没有意识到问题所在)
接着查看请求,是一个简单的Get请求,也没有重新向之类的操作,
然后就写出了如下代码:
class LiangshanSpider(scrapy.Spider):
name = 'LiangShan'
start_urls = ['http://yjglj.lsz.gov.cn/xxgk/fdzdgknr/tzgg/index.html']
def parse(self, response):
print(response)
此时运行他向我返回了一个 503
于是我觉得是我请求头没带的原因
所以用requests测试需要哪些请求头
import requests
cookies = {
'_gscu_1331274224': '61393701tru11863',
'_gscbrs_1331274224': '1',
'Hm_lvt_39df1f6e548ab6b45b94060d514c17b4': '1661393704,1661394583,1661396798',
'_gscs_1331274224': '61396795jr87zj63|pv:2',
'Hm_lpvt_39df1f6e548ab6b45b94060d514c17b4': '1661396802',
}
headers = {
'Connection': 'keep-alive',
'Cache-Control': 'max-age=0',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3542.0 Safari/537.36',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'Referer': 'http://yjglj.lsz.gov.cn/xxgk/fdzdgknr/jgxx/jggk_30892/',
'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'zh-CN,zh;q=0.9',
}
response = requests.get('http://yjglj.lsz.gov.cn/xxgk/fdzdgknr/tzgg/', headers=headers, cookies=cookies)
print(response)
此时问题就出现了,我带上了所有的请求头,但是爬虫却陷入了阻塞状态
既没有返回报错的状态码,也没有响应,就一直等待
这不禁让我想起了我第一次打开网页的状态,也是和我现在一样,一直在等待数据加载
回想起我后来通过导航栏成功进入了,我认为可能服务器对 Referer 参数进行了检查
然后我检查了多次 请求头 中的 Referer ,确认没有问题
在我百思不得其解是,同时提醒了我:“你在短时间内,重复请求两次试试”
这让我想起了,我当时确实是第二次请求是才得到正确网页的,于是代码稍作修改
class LiangshanSpider(scrapy.Spider):
name = 'LiangShan'
start_urls = ['http://yjglj.lsz.gov.cn/xxgk/fdzdgknr/tzgg/index.html',
'http://yjglj.lsz.gov.cn/xxgk/fdzdgknr/tzgg/index.html']
def parse(self, response):
print(response)
果然成功了,我直呼内行
这哪里是反爬呀,简直就是心里战,一般人打不开网页时,都会去刷新网页,一刷新就出来了
而作为爬虫入侵者,则会一直想着,是请求头哪里没写对,然而误入歧途
网友评论