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脚本实现统计日志文件中的ip访问次数代码分享
Aug 06 Python
python计算书页码的统计数字问题实例
Sep 26 Python
Python实现去除代码前行号的方法
Mar 10 Python
以911新闻为例演示Python实现数据可视化的教程
Apr 23 Python
详解在Python的Django框架中创建模板库的方法
Jul 20 Python
Python 文件管理实例详解
Nov 10 Python
python subprocess 杀掉全部派生的子进程方法
Jan 16 Python
浅谈Python对内存的使用(深浅拷贝)
Jan 17 Python
Python控制Firefox方法总结
Jun 03 Python
Python字符串大小写转换拼接删除空白
Sep 19 Python
flask 框架操作MySQL数据库简单示例
Feb 02 Python
如何正确理解python装饰器
Jun 15 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
查找mysql字段中固定字符串并替换的几个方法
2012/09/23 PHP
ThinkPHP调试模式与日志记录概述
2014/08/22 PHP
Yii框架引入coreseek分页功能示例
2019/02/08 PHP
零基础学JavaScript最新动画教程+iso光盘下载
2008/01/22 Javascript
JavaScript 存在陷阱 删除某一区域所有节点
2010/05/10 Javascript
IE中createElement需要注意的一个问题
2010/07/13 Javascript
JavaScript下通过的XMLHttpRequest发送请求的代码
2011/06/28 Javascript
jQuery实现简单的间隔向上滚动效果
2015/03/09 Javascript
小程序getLocation需要在app.json中声明permission字段
2019/04/04 Javascript
JS使用H5实现图片预览功能
2019/09/30 Javascript
深入学习Vue nextTick的用法及原理
2019/10/08 Javascript
js实现文字头像的生成代码
2020/03/07 Javascript
使用Vue+Django+Ant Design做一个留言评论模块的示例代码
2020/06/01 Javascript
Vue实现点击导航栏当前标签后变色功能
2020/08/19 Javascript
[01:06:42]VP vs NewBee Supermajor 胜者组 BO3 第二场 6.5
2018/06/06 DOTA
举例讲解Python的Tornado框架实现数据可视化的教程
2015/05/02 Python
Python入门_浅谈字符串的分片与索引、字符串的方法
2017/05/16 Python
Python实现将sqlite数据库导出转成Excel(xls)表的方法
2017/07/17 Python
开源软件包和环境管理系统Anaconda的安装使用
2017/09/04 Python
pandas 透视表中文字段排序方法
2018/11/16 Python
Python2比较当前图片跟图库哪个图片相似的方法示例
2019/09/28 Python
Python基本类型的连接组合和互相转换方式(13种)
2019/12/16 Python
浅谈keras 模型用于预测时的注意事项
2020/06/27 Python
使用keras实现BiLSTM+CNN+CRF文字标记NER
2020/06/29 Python
如何在VSCode下使用Jupyter的教程详解
2020/07/13 Python
Python绘图之二维图与三维图详解
2020/08/04 Python
HTML5之SVG 2D入门12—SVG DOM及DOM操作介绍
2013/01/30 HTML / CSS
Ellesse英国官网:意大利高级运动品牌
2019/07/23 全球购物
证券期货行业个人的自我评价
2013/12/26 职场文书
活动总结怎么写
2014/04/28 职场文书
舞蹈专业求职信
2014/06/13 职场文书
物价局领导班子四风问题整改措施
2014/10/26 职场文书
2016年度先进班组事迹材料
2016/03/01 职场文书
原生JS实现飞机大战小游戏
2021/06/09 Javascript
利用Sharding-Jdbc进行分库分表的操作代码
2022/01/22 Java/Android
Hive HQL支持2种查询语句风格
2022/06/25 数据库