python爬取全站链接,python爬取盘搜的有效链接

因为盘搜搜索出来的链接有很多已经失效了,影响找数据的效率,因此想到了用爬虫来过滤出有效的链接,顺便练练手~

5a07b29afa62a6b91450efe06bc3de63.png

这是本次爬取的目标网址http://www.pansou.com,首先先搜索个python,之后打开开发者工具,

可以发现这个链接下的json数据就是我们要爬取的数据了,把多余的参数去掉,

剩下的链接格式为http://106.15.195.249:8011/search_new?q=python&p=1,q为搜索内容,p为页码

以下是代码实现:

importrequests

importjson

frommultiprocessing.dummyimportPoolasThreadPool

frommultiprocessingimportQueue

importsys

headers={

"User-Agent":"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/75.0.3770.100Safari/537.36"

}

q1=Queue()

q2=Queue()

urls=[]#存取url列表

#读取url

defget_urls(query):

#遍历50页

foriinrange(1,51):

#要爬取的url列表,返回值是json数据,q参数是搜索内容,p参数是页码

url="http://106.15.195.249:8011/search_new?&q=%s&p=%d"%(query,i)

urls.append(url)

#获取数据

defget_data(url):

print("开始加载,请等待...")

#获取json数据并把json数据转换为字典

resp=requests.get(url,headers=headers).content.decode("utf-8")

resp=json.loads(resp)

#如果搜素数据为空就抛出异常停止程序

ifresp['list']['data']==[]:

raiseException

#遍历每一页数据的长度

fornuminrange(len(resp['list']['data'])):

#获取百度云链接

link=resp['list']['data'][num]['link']

#获取标题

title=resp['list']['data'][num]['title']

#访问百度云链接,判断如果页面源代码中有“失效时间:”这段话的话就表明链接有效,链接无效的页面是没有这段话的

link_content=requests.get(link,headers=headers).content.decode("utf-8")

if"失效时间:"inlink_content:

#把标题放进队列1

q1.put(title)

#把链接放进队列2

q2.put(link)

#写入csv文件

withopen("wangpanziyuan.csv","a+",encoding="utf-8")asfile:

file.write(q1.get()+","+q2.get()+"\n")

print("ok")

if__name__=='__main__':

#括号内填写搜索内容

get_urls("python")

#创建线程池

pool=ThreadPool(3)

try:

results=pool.map(get_data,urls)

exceptExceptionase:

print(e)

pool.close()

pool.join()

print("退出")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值