2024年Python最全python多线程爬虫框架

file.close()

‘’’

if self.cache:

#如果有缓存方式,缓存网页

self.cache[url] = result

print(url,“页面下载完成”)

return result[“html”]

def download(self,url,headers,proxy,num_retries,data=None):

‘’’

用于下载一个页面,返回页面和与之对应的状态码

‘’’

#构建请求

request = urllib.request.Request(url,data,headers or {})

request.add_header(“Cookie”,“finger=7360d3c2; UM_distinctid=15c59703db998-0f42b4b61afaa1-5393662-100200-15c59703dbcc1d; pgv_pvi=653650944; fts=1496149148; sid=bgsv74pg; buvid3=56812A21-4322-4C70-BF18-E6D646EA78694004infoc; CNZZDATA2724999=cnzz_eid%3D214248390-1496147515-https%253A%252F%252Fwww.baidu.com%252F%26ntime%3D1496805293”)

request.add_header(“Upgrade-Insecure-Requests”,“1”)

opener = self.opener or urllib.request.build_opener()

if proxy:

#如果有代理IP,使用代理IP

opener = urllib.request.build_opener(urllib.request.ProxyHandler(proxy))

try:

#下载网页

response = opener.open(request)

print(“code是”,response.code)

html = response.read().decode()

code = response.code

except Exception as e:

print(“下载出现错误”,str(e))

html = ‘’

if hasattr(e,“code”):

code =e.code

if num_retries > 0 and 500<code<600:

#如果错误不是未找到网页,则重新下载num_retries次

return self.download(url,headers,proxy,num_retries-1,data)

else:

code = None

print(html)

return {“html”:html,“code”:code}

class Throttle:

‘’’

按照延时,请求,代理IP等下载网页,处理网页中的link的类

‘’’

def __init__(self, delay):

self

  • 10
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值