python爬取盘搜的有效链接实现代码


Posted in Python onJuly 20, 2019

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

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

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

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

python爬取盘搜的有效链接实现代码

以下是代码实现:

import requests
import json
from multiprocessing.dummy import Pool as ThreadPool
from multiprocessing import Queue
import sys
headers = {
  "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36"
}
q1 = Queue()
q2 = Queue()
urls = [] # 存取url列表
# 读取url
def get_urls(query):
  # 遍历50页
  for i in range(1,51):
    # 要爬取的url列表,返回值是json数据,q参数是搜索内容,p参数是页码
    url = "http://106.15.195.249:8011/search_new?&q=%s&p=%d" % (query,i)
    urls.append(url)
# 获取数据
def get_data(url):
  print("开始加载,请等待...")
  # 获取json数据并把json数据转换为字典
  resp = requests.get(url, headers=headers).content.decode("utf-8")
  resp = json.loads(resp)
  # 如果搜素数据为空就抛出异常停止程序
  if resp['list']['data'] == []:
    raise Exception
  # 遍历每一页数据的长度
  for num in range(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 "失效时间:" in link_content:
      # 把标题放进队列1
      q1.put(title)
      # 把链接放进队列2
      q2.put(link)
      # 写入csv文件
      with open("wangpanziyuan.csv", "a+", encoding="utf-8") as file:
        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)
  except Exception as e:
    print(e)
  pool.close()
  pool.join()
  print("退出")

总结

以上所述是小编给大家介绍的python爬取盘搜的有效链接实现代码希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
简化Python的Django框架代码的一些示例
Apr 20 Python
django2 快速安装指南分享
Jan 05 Python
Python使用flask框架操作sqlite3的两种方式
Jan 31 Python
解决Tensorflow使用pip安装后没有model目录的问题
Jun 13 Python
Python中交换两个元素的实现方法
Jun 29 Python
django2.2安装错误最全的解决方案(小结)
Sep 24 Python
基于python的列表list和集合set操作
Nov 24 Python
python读取与处理netcdf数据方式
Feb 14 Python
Python字典实现伪切片功能
Oct 28 Python
Python项目打包成二进制的方法
Dec 30 Python
Pytorch1.5.1版本安装的方法步骤
Dec 31 Python
Python使用cn2an实现中文数字与阿拉伯数字的相互转换
Mar 02 Python
python将字符串list写入excel和txt的实例
Jul 20 #Python
python中for循环把字符串或者字典添加到列表的方法
Jul 20 #Python
python:按行读入,排序然后输出的方法
Jul 20 #Python
对Python3中列表乘以某一个数的示例详解
Jul 20 #Python
python3在同一行内输入n个数并用列表保存的例子
Jul 20 #Python
在python中实现同行输入/接收多个数据的示例
Jul 20 #Python
python使用tomorrow实现多线程的例子
Jul 20 #Python
You might like
PHP 配置open_basedir 让各虚拟站点独立运行
2009/11/12 PHP
详谈配置phpstorm完美支持Codeigniter(CI)代码自动完成(代码提示)
2017/04/07 PHP
Yii2 中实现单点登录的方法
2018/03/09 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
2019/11/23 PHP
改善你的jQuery的25个步骤 千倍级效率提升
2010/02/11 Javascript
jquery 结合C#后台的数组对文章的关键字自动添加链接的代码
2011/07/15 Javascript
重写javascript中window.confirm的行为
2012/10/21 Javascript
jquery中animate动画积累的解决方法
2013/10/05 Javascript
使用GruntJS构建Web程序之安装篇
2014/06/04 Javascript
JS是按值传递还是按引用传递
2015/01/30 Javascript
JavaScript实现广告弹窗效果
2016/08/09 Javascript
gulp加批处理(.bat)实现ng多应用一键自动化构建
2017/02/16 Javascript
vue 利用路由守卫判断是否登录的方法
2018/09/29 Javascript
解决layer弹出层的内容页点击按钮跳转到新的页面问题
2019/09/14 Javascript
Vue向后台传数组数据,springboot接收vue传的数组数据实例
2020/11/12 Javascript
在类Unix系统上开始Python3编程入门
2015/08/20 Python
实践Python的爬虫框架Scrapy来抓取豆瓣电影TOP250
2016/01/20 Python
python脚本设置超时机制系统时间的方法
2016/02/21 Python
asyncio 的 coroutine对象 与 Future对象使用指南
2016/09/11 Python
Django验证码的生成与使用示例
2017/05/20 Python
python机器学习实战之K均值聚类
2017/12/20 Python
Python读取Json字典写入Excel表格的方法
2018/01/03 Python
TensorFlow搭建神经网络最佳实践
2018/03/09 Python
Python cookbook(数据结构与算法)将名称映射到序列元素中的方法
2018/03/22 Python
Django自定义过滤器定义与用法示例
2018/03/22 Python
python tools实现视频的每一帧提取并保存
2020/03/20 Python
python利用 keyboard 库记录键盘事件
2020/10/16 Python
Python文件操作的面试题
2013/06/22 面试题
办公室文秘自我评价
2013/09/21 职场文书
中学生在校期间的自我评价分享
2013/11/13 职场文书
求职自荐信范文格式
2013/11/29 职场文书
《散步》教学反思
2014/03/02 职场文书
Filebeat 采集 Nginx 日志的方法
2021/03/31 Servers
python - timeit 时间模块
2021/04/06 Python
详细了解java监听器和过滤器
2021/07/09 Java/Android
Python中np.random.randint()参数详解及用法实例
2022/09/23 Python