python使用requests大批量请求卡住怎么解决?

我用python的request抓取别人网站抓了几100条左右就卡死了是什么情况?

page=request.GET.get('page')
    for pages in range(1,int(page)+1):
        data = requests.get("http://okokzy.cc/?m=vod-type-id-1-pg-"+str(pages)+".html")
        data.encoding = "utf-8"
        data = data.text
        data = etree.HTML(data)
        name = data.xpath("//div[@class='xing_vb']/ul/li/span[@class='xing_vb4']/a/text()")
        link = data.xpath("//div[@class='xing_vb']/ul/li/span[@class='xing_vb4']/a/@href")
        listcode = 0
                print(link)

没有任何报错也没有发现任何异常就是打印出来的东西打印到某一条到时候就不动了

6个回答

首先你的request最好设置一下超时,如果某个链接长时间没响应,你就会阻塞在那里;然后得百分百确认你的xpath是正确的,且是匹配里面所有url的,这个地方可以打个日志,看看是阻塞在某次循环了,还是xpath没有解析到数据

看看这位博主吧,碰到跟你一样的问题。
https://www.cnblogs.com/niansi/p/7143736.html

你可以加上这两句代码试试:
import socket
socket.setdefaulttimeout(时间)

目前有两种方法解决,一种是更改dns,并且推荐阿里的dns,因为他们认为这里的卡住是因为卡在了dns解析那里。

另一种则是设置全局的socket超时时间,通过

import socket
socket.setdefaulttimeout(时间)

这两句代码来解决。

你把page写最大试试

刚才我尝试了下,这个是因为这个网站有防爬措施导致的,如果在请求的时候,加上请求头,这个就可以了。我这个代码写的比较简单,这样的网站规律都是一样的,可以采用多线程或者异步方式爬取速度会更快。

图片说明

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐