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

 更新时间:2019年07月20日 09:58:42   作者:小小沪  
这篇文章主要介绍了python爬取盘搜的有效链接,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下

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

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

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

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

以下是代码实现:

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实现简单的学生点名系统

    现在的学生大部分都很积极,会主动举手回答问题。但是,也会遇到一些不好的情况,比如年级越高主动举手的人越少,所以本文做了一个随机的学生点名系统可以帮老师解决这些问题
    2022-09-09
  • 关于numpy中矩阵的翻转(flip)

    关于numpy中矩阵的翻转(flip)

    这篇文章主要介绍了关于numpy中矩阵的翻转(flip),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • python并发编程多进程 互斥锁原理解析

    python并发编程多进程 互斥锁原理解析

    这篇文章主要介绍了python并发编程多进程 互斥锁原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • Python和Ruby中each循环引用变量问题(一个隐秘BUG?)

    Python和Ruby中each循环引用变量问题(一个隐秘BUG?)

    这篇文章主要介绍了Python和Ruby中each循环引用变量问题,类似PHP的foreach中使用引用变量的问题,需要的朋友可以参考下
    2014-06-06
  • 在Python操作时间和日期之asctime()方法的使用

    在Python操作时间和日期之asctime()方法的使用

    这篇文章主要介绍了在Python操作时间和日期之asctime()方法的使用,是Python入门学习中的基础知识,需要的朋友可以参考下
    2015-05-05
  • python迭代器常见用法实例分析

    python迭代器常见用法实例分析

    这篇文章主要介绍了python迭代器常见用法,结合实例形式分析了Python迭代器概念、功能、常见操作方法及相关注意事项,需要的朋友可以参考下
    2019-11-11
  • PyQt4实时显示文本内容GUI的示例

    PyQt4实时显示文本内容GUI的示例

    今天小编就为大家分享一篇PyQt4实时显示文本内容GUI的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • python安装sklearn模块的方法详解

    python安装sklearn模块的方法详解

    这篇文章主要介绍了python安装sklearn模块的方法详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • win10下tensorflow和matplotlib安装教程

    win10下tensorflow和matplotlib安装教程

    这篇文章主要为大家详细介绍了win10下tensorflow和matplotlib安装教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • python-jwt用户认证食用教学的实现方法

    python-jwt用户认证食用教学的实现方法

    这篇文章主要介绍了python-jwt用户认证食用教学的实现方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01

最新评论