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实现的监测服务器硬盘使用率脚本分享
Nov 07 Python
django实现同一个ip十分钟内只能注册一次的实例
Nov 03 Python
Django处理文件上传File Uploads的实例
May 28 Python
ubuntu16.04制作vim和python3的开发环境
Sep 23 Python
python twilio模块实现发送手机短信功能
Aug 02 Python
python重要函数eval多种用法解析
Jan 14 Python
python实现加密的方式总结
Jan 19 Python
python3实现往mysql中插入datetime类型的数据
Mar 02 Python
13个Pandas实用技巧,助你提高开发效率
Aug 19 Python
Python利用pip安装tar.gz格式的离线资源包
Sep 14 Python
pytorch 中autograd.grad()函数的用法说明
May 12 Python
python编程项目中线上问题排查与解决
Nov 01 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
PHPer 需要了解的 5 个 Composer 小技巧
2014/08/18 PHP
php检查日期函数checkdate用法实例
2015/03/19 PHP
PHP在线打包下载功能示例
2016/10/15 PHP
php使用curl_init()和curl_multi_init()多线程的速度比较详解
2018/08/15 PHP
javascript学习网址备忘
2007/05/29 Javascript
JS+CSS模拟可以无刷新显示内容的留言板实例
2015/03/03 Javascript
jQuery实现表格颜色交替显示的方法
2015/03/09 Javascript
jQuery中on绑定事件后引发的事件冒泡问题如何解决
2016/05/25 Javascript
关于JavaScript限制字数的输入框的那些事
2016/08/14 Javascript
手机浏览器 后退按钮强制刷新页面方法总结
2016/10/09 Javascript
纯JS实现表单验证实例
2016/12/24 Javascript
完美实现js选项卡切换效果(一)
2017/03/08 Javascript
less简单入门(CSS 预处理语言)
2017/03/08 Javascript
vue2.0实战之使用vue-cli搭建项目(2)
2017/03/27 Javascript
vue.js+Echarts开发图表放大缩小功能实例
2017/06/09 Javascript
nodejs异步编程基础之回调函数用法分析
2018/12/26 NodeJs
vue之debounce属性被移除及处理详解
2019/11/13 Javascript
jQuery HTML设置内容和属性操作实例分析
2020/05/20 jQuery
python获取当前用户的主目录路径方法(推荐)
2017/01/12 Python
python中的计时器timeit的使用方法
2017/10/20 Python
基于python中__add__函数的用法
2019/11/25 Python
在Ubuntu中安装并配置Pycharm教程的实现方法
2021/01/06 Python
CSS3 实现童年的纸飞机
2019/05/05 HTML / CSS
新加坡最佳婴儿用品店:Mamahood.com.sg
2018/08/26 全球购物
LORAC官网:美国彩妆品牌
2019/08/27 全球购物
super关键字的用法
2012/04/10 面试题
DBA数据库管理员JAVA程序员架构师必看
2016/02/07 面试题
年会活动策划方案
2014/01/23 职场文书
中华魂放飞梦想演讲稿
2014/08/26 职场文书
商务宴会祝酒词
2015/08/11 职场文书
php 获取音视频时长,PHP 利用getid3 获取音频文件时长等数据
2021/04/01 PHP
Python中for后接else的语法使用
2021/05/18 Python
Jupyter Notebook内使用argparse报错的解决方案
2021/06/03 Python
Python闭包的定义和使用方法
2022/04/11 Python
Python测试框架pytest高阶用法全面详解
2022/06/01 Python
在ubuntu下安装go开发环境的全过程
2022/08/05 Golang