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框架中的通用视图
May 04 Python
Python中文分词实现方法(安装pymmseg)
Jun 14 Python
Django应用程序中如何发送电子邮件详解
Feb 04 Python
简单实现python聊天程序
Apr 01 Python
python用户评论标签匹配的解决方法
May 31 Python
利用nohup来开启python文件的方法
Jan 14 Python
对于Python深浅拷贝的理解
Jul 29 Python
python内置模块collections知识点总结
Dec 19 Python
python代码如何实现余弦相似性计算
Feb 09 Python
python中count函数知识点浅析
Dec 17 Python
python tkinter实现下载进度条及抖音视频去水印原理
Feb 07 Python
python使用pycharm安装pyqt5以及相关配置
Apr 22 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
超强分页类2.0发布,支持自定义风格,默认4种显示模式
2007/01/02 PHP
PHPMailer邮件发送的实现代码
2013/05/04 PHP
ThinkPHP模版中导入CSS和JS文件的方法
2014/11/29 PHP
php简单实现快速排序的方法
2015/04/04 PHP
PHP文件与目录操作示例
2016/12/24 PHP
PHP7新特性之抽象语法树(AST)带来的变化详解
2018/07/17 PHP
使用Laravel中的查询构造器实现增删改查功能
2019/09/03 PHP
javascript 模拟JQuery的Ready方法实现并出现的问题
2009/12/06 Javascript
JavaScript判断密码强度(自写代码)
2013/09/06 Javascript
JQuery中$.ajax()方法参数详解及应用
2013/12/12 Javascript
js中自定义方法实现停留几秒sleep
2014/07/11 Javascript
js数组常用操作方法小结(增加,删除,合并,分割等)
2016/08/02 Javascript
easy ui datagrid 从编辑框中获取值的方法
2017/02/22 Javascript
Vue用v-for给src属性赋值的方法
2018/03/03 Javascript
JS实现点击li标签弹出对应的索引功能【案例】
2019/02/18 Javascript
微信小程序学习笔记之跳转页面、传递参数获得数据操作图文详解
2019/03/28 Javascript
vue实现户籍管理系统
2020/05/29 Javascript
Python的装饰器模式与面向切面编程详解
2015/06/21 Python
Python脚本实现自动发带图的微博
2016/04/27 Python
Django卸载之后重新安装的方法
2017/03/15 Python
可能是最全面的 Python 字符串拼接总结【收藏】
2018/07/09 Python
基于PyQT实现区分左键双击和单击
2020/05/19 Python
python实现感知机模型的示例
2020/09/30 Python
手把手教你用纯css3实现轮播图效果实例
2017/05/04 HTML / CSS
htnl5利用svg页面高斯模糊的方法
2018/07/20 HTML / CSS
JBL英国官网:JBL UK
2018/07/04 全球购物
荷兰天然和有机产品网上商城:BigGreenSmile.nl
2020/07/26 全球购物
2014年学校国庆主题活动方案
2014/09/16 职场文书
校车司机安全责任书
2015/05/11 职场文书
预备党员转正党小组意见
2015/06/01 职场文书
2016年推广普通话宣传周活动总结
2016/04/06 职场文书
CSS预处理框架——Stylus
2021/04/21 HTML / CSS
python 中[0]*2与0*2的区别说明
2021/05/10 Python
Python中的pprint模块
2021/11/27 Python
阿里云 Windows server 2019 配置FTP
2022/04/28 Servers
Python+SeaTable实现计算两个日期间的工作日天数
2022/07/07 Python