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守护进程(daemon)代码实例
Mar 06 Python
回调函数的意义以及python实现实例
Jun 20 Python
python将每个单词按空格分开并保存到文件中
Mar 19 Python
Python(TensorFlow框架)实现手写数字识别系统的方法
May 29 Python
python pandas中对Series数据进行轴向连接的实例
Jun 08 Python
用python代码将tiff图片存储到jpg的方法
Dec 04 Python
详解Python Matplotlib解决绘图X轴值不按数组排序问题
Aug 05 Python
Python使用import导入本地脚本及导入模块的技巧总结
Aug 07 Python
python django生成迁移文件的实例
Aug 31 Python
python并发爬虫实用工具tomorrow实用解析
Sep 25 Python
python数据爬下来保存的位置
Feb 17 Python
python绘制云雨图raincloud plot
Aug 05 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数据库开发知多少
2006/10/09 PHP
php取整函数ceil,floo,round的用法及介绍
2013/08/31 PHP
使用php检测用户当前使用的浏览器是否为IE浏览器
2013/12/03 PHP
解决cPanel无法安装php5.2.17
2014/06/22 PHP
PHP中unset,array_splice删除数组中元素的区别
2014/07/28 PHP
PHP中使用json数据格式定义字面量对象的方法
2014/08/20 PHP
phpMyAdmin安装并配置允许空密码登录
2015/07/04 PHP
JavaScript的parseInt 进制问题
2009/05/07 Javascript
jQuery的one()方法用法实例
2015/01/19 Javascript
两种方法解决javascript url post 特殊字符转义 + & #
2016/04/13 Javascript
Bootstrap模态框调用功能实现方法
2016/09/19 Javascript
Angular2的管道Pipe的使用方法
2017/11/07 Javascript
如何给element添加一个抽屉组件的方法步骤
2019/07/14 Javascript
JavaScript大数相加相乘的实现方法实例
2020/10/18 Javascript
[05:46]DOTA2英雄梦之声_第18期_陈
2014/06/20 DOTA
[48:02]Ti4循环赛第三日 VG vs Liquid和NEWBEE vs DK
2014/07/12 DOTA
[01:59]游戏“zheng”当时试玩会
2019/08/21 DOTA
Python正则表达式介绍
2012/08/06 Python
详解python中xlrd包的安装与处理Excel表格
2016/12/16 Python
Python写的一个定时重跑获取数据库数据
2016/12/28 Python
Python标准库shutil用法实例详解
2018/08/13 Python
windows下cx_Freeze生成Python可执行程序的详细步骤
2018/10/09 Python
Python实现查找二叉搜索树第k大的节点功能示例
2019/01/24 Python
python GUI库图形界面开发之PyQt5单选按钮控件QRadioButton详细使用方法与实例
2020/02/28 Python
利用Python裁切tiff图像且读取tiff,shp文件的实例
2020/03/10 Python
python爬虫请求头设置代码
2020/07/28 Python
分享CSS3制作卡片式图片的方法
2016/07/08 HTML / CSS
免费获得微软MCSD证书赶快行动吧!
2012/11/13 HTML / CSS
一名女生的自荐信
2013/12/08 职场文书
大学生军训自我鉴定
2014/02/12 职场文书
带刀到教室的检讨书
2014/10/04 职场文书
2015年员工试用期工作总结
2014/12/12 职场文书
幼儿园托班开学寄语(2016春季)
2015/12/03 职场文书
mysql多表查询-笔记七
2021/04/05 MySQL
Python实战之实现康威生命游戏
2021/04/26 Python
Java面试题冲刺第十八天--Spring框架3
2021/08/07 面试题