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 类与元类的深度挖掘 II【经验】
May 06 Python
python实现微信跳一跳辅助工具步骤详解
Jan 04 Python
python os.listdir按文件存取时间顺序列出目录的实例
Oct 21 Python
Python使用os.listdir()和os.walk()获取文件路径与文件下所有目录的方法
Apr 01 Python
PyQt5 QTableView设置某一列不可编辑的方法
Jun 25 Python
python并发编程多进程 模拟抢票实现过程
Aug 20 Python
Python常用模块logging——日志输出功能(示例代码)
Nov 20 Python
python3下pygame如何实现显示中文
Jan 11 Python
Keras使用ImageNet上预训练的模型方式
May 23 Python
python用Configobj模块读取配置文件
Sep 26 Python
python利用文件时间批量重命名照片和视频
Feb 09 Python
python保存大型 .mat 数据文件报错超出 IO 限制的操作
May 10 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中常量,变量的作用域和生存周期
2013/08/10 PHP
很可爱的输入框
2008/08/03 Javascript
javascript 文档的编码问题解决
2009/03/01 Javascript
jQuery 开天辟地入门篇一
2009/12/09 Javascript
jquery插件之easing使用
2010/08/19 Javascript
JavaScript高级程序设计 阅读笔记(十三) js定义类或对象
2012/08/14 Javascript
JavaScript高级程序设计(第3版)学习笔记2 js基础语法
2012/10/11 Javascript
jquery实现图片左右间隔滚动特效(可自动播放)
2013/05/08 Javascript
JS封装cookie操作函数实例(设置、读取、删除)
2015/11/17 Javascript
微信小程序 侧滑删除(左滑删除)
2017/05/23 Javascript
JS监控关闭浏览器操作的实例详解
2017/09/12 Javascript
javascript使用正则实现去掉字符串前面的所有0
2018/07/23 Javascript
你不知道的Vue技巧之--开发一个可以通过方法调用的组件(推荐)
2019/04/15 Javascript
vue-router 前端路由之路由传值的方式详解
2019/04/30 Javascript
解决前后端分离 vue+springboot 跨域 session+cookie失效问题
2019/05/13 Javascript
使用layer模态框给新页面传值的方法
2019/09/27 Javascript
JS自定义滚动条效果
2020/03/13 Javascript
js删除对象中的某一个字段的方法实现
2021/01/11 Javascript
Django卸载之后重新安装的方法
2017/03/15 Python
python多进程提取处理大量文本的关键词方法
2018/06/05 Python
python字典值排序并取出前n个key值的方法
2018/10/17 Python
Python运行DLL文件的方法
2020/01/17 Python
基于django 的orm中非主键自增的实现方式
2020/05/18 Python
Python通过getattr函数获取对象的属性值
2020/10/16 Python
Argos官网:英国家喻户晓的百货零售连锁商
2017/04/03 全球购物
一套带网友答案的.NET笔试题
2016/12/06 面试题
如何选择使用结构还是类
2014/05/30 面试题
德尔福集团DELPHI的笔试题
2012/02/22 面试题
挂牌仪式策划方案
2014/05/18 职场文书
董事长新年致辞
2015/07/29 职场文书
同学会感言
2015/07/30 职场文书
人事任命书范本
2015/09/21 职场文书
毕业生自我鉴定范文
2019/05/13 职场文书
Python+Appium实现自动抢微信红包
2021/05/21 Python
解析探秘fescar分布式事务实现原理
2022/02/28 Java/Android
优化Mysql查询的示例
2022/04/26 MySQL