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 getopt模块处理命令行选项实例
May 13 Python
python获得文件创建时间和修改时间的方法
Jun 30 Python
python机器人行走步数问题的解决
Jan 29 Python
对python操作kafka写入json数据的简单demo分享
Dec 27 Python
Python类中方法getitem和getattr详解
Aug 30 Python
python 循环数据赋值实例
Dec 02 Python
python pptx复制指定页的ppt教程
Feb 14 Python
python线程池 ThreadPoolExecutor 的用法示例
Oct 10 Python
python爬取”顶点小说网“《纯阳剑尊》的示例代码
Oct 16 Python
jupyter notebook快速入门及使用详解
Nov 13 Python
详解appium自动化测试工具(monitor、uiautomatorviewer)
Jan 27 Python
Pytorch 使用tensor特定条件判断索引
Apr 08 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
php5.3中连接sqlserver2000的两种方法(com与ODBC)
2012/12/29 PHP
mac环境中使用brew安装php5.5.15
2014/08/18 PHP
php获取根域名方法汇总
2014/10/28 PHP
利用 fsockopen() 函数开放端口扫描器的实例
2017/08/19 PHP
实现复选框全选/全不选切换
2006/12/23 Javascript
ASP中用Join和Array,可以加快字符连接速度的代码
2007/08/22 Javascript
JavaScript中几种常见排序算法小结
2011/02/22 Javascript
7个JS基础知识总结
2014/03/05 Javascript
JS数组的常见用法实例
2015/02/10 Javascript
Jquery实现遮罩层的方法
2015/06/08 Javascript
jQuery移动web开发中的页面初始化与加载事件
2015/12/03 Javascript
利用js来实现缩略语列表、文献来源链接和快捷键列表
2016/12/16 Javascript
loading动画特效小结
2017/01/22 Javascript
简单谈谈JS中的正则表达式
2017/09/11 Javascript
vue中遇到的坑之变化检测问题(数组相关)
2017/10/13 Javascript
基于jquery实现九宫格拼图小游戏
2018/11/30 jQuery
vue+vuex+json-seiver实现数据展示+分页功能
2019/04/11 Javascript
vue3.0中的双向数据绑定方法及优缺点
2019/08/01 Javascript
微信小程序实现吸顶效果
2020/01/08 Javascript
[01:05]DOTA2完美大师赛趣味视频之选手教你打职业
2017/11/23 DOTA
[01:22:29]真视界:2019年国际邀请赛总决赛
2020/01/29 DOTA
python dataframe向下向上填充,fillna和ffill的方法
2018/11/28 Python
Python实现多态、协议和鸭子类型的代码详解
2019/05/05 Python
jenkins配置python脚本定时任务过程图解
2019/10/29 Python
Python打包模块wheel的使用方法与将python包发布到PyPI的方法详解
2020/02/12 Python
CSS的background属性及CSS3的背景图片设置总结
2016/06/13 HTML / CSS
bareMinerals官网:矿物质化妆品和护肤品
2018/02/04 全球购物
国际领先的在线时尚服装和配饰店:DressLily
2019/03/03 全球购物
复古服装:RetroStage
2019/05/10 全球购物
计算机应用专业推荐信
2013/11/13 职场文书
公司股权转让协议书
2014/04/12 职场文书
《莫泊桑拜师》教学反思
2014/04/23 职场文书
中班下学期个人工作总结
2015/02/12 职场文书
2015年小学开学寄语
2015/02/27 职场文书
开票证明
2015/06/23 职场文书
Python基于Tkinter开发一个爬取B站直播弹幕的工具
2021/05/06 Python