qq_39511609
萧潇墨
采纳率60.6%
2019-01-29 16:24 阅读 5.6k

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

160

我用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条回答 默认 最新

  • 已采纳
    xlspadan 熊猿 2019-01-29 18:51

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

    点赞 评论 复制链接分享
  • qq_34872748 L星火燎原 2019-01-29 16:33

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

    点赞 评论 复制链接分享
  • dawang212 沵若成风 2019-01-29 17:02

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

    点赞 评论 复制链接分享
  • ZuoYaTang 麥芽糖 2019-01-29 21:27

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

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

    import socket
    socket.setdefaulttimeout(时间)

    这两句代码来解决。

    点赞 评论 复制链接分享
  • weixin_42161126 ITMokey 2019-01-30 11:04

    你把page写最大试试

    点赞 评论 复制链接分享
  • m0_37886429 幸福丶如此 2019-01-31 11:21

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

    图片说明

    点赞 评论 复制链接分享

相关推荐