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的教程
May 04 Python
简单讲解Python中的数字类型及基本的数学计算
Mar 11 Python
Python 搭建Web站点之Web服务器与Web框架
Nov 06 Python
pytorch构建网络模型的4种方法
Apr 13 Python
Python中的集合介绍
Jan 28 Python
详解python3 + Scrapy爬虫学习之创建项目
Apr 12 Python
FFrpc python客户端lib使用解析
Aug 24 Python
安装python及pycharm的教程图解
Oct 10 Python
Django admin禁用编辑链接和添加删除操作详解
Nov 15 Python
PyCharm刷新项目(文件)目录的实现
Feb 14 Python
基于python图书馆管理系统设计实例详解
Aug 05 Python
Python内置函数property()如何使用
Sep 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
PHP程序员最常犯的11个MySQL错误小结
2010/11/20 PHP
JavaScript 类似flash效果的立体图片浏览器
2010/02/08 Javascript
flexigrid 类似ext grid的JS表格代码
2010/07/17 Javascript
再论Javascript的类继承
2011/03/05 Javascript
JS远程获取网页源代码实例
2013/09/05 Javascript
关于javascript event flow 的一个bug详解
2013/09/17 Javascript
js截取字符串的两种方法及区别详解
2013/11/05 Javascript
JavaScript中this的使用详解
2013/11/08 Javascript
js数组的操作指南
2014/12/28 Javascript
JS通过Cookie判断页面是否为首次打开
2016/02/05 Javascript
Bootstrap Paginator分页插件使用方法详解
2016/05/30 Javascript
Jquery获取当前城市的天气信息
2016/08/05 Javascript
Javascript点击按钮随机改变数字与其颜色
2016/09/01 Javascript
div实现自适应高度的textarea实现angular双向绑定
2017/01/08 Javascript
Vue2学习笔记之请求数据交互vue-resource
2017/02/23 Javascript
微信小程序 配置顶部导航条标题颜色的实现方法
2017/09/20 Javascript
JavaScript实现为事件句柄绑定监听函数的方法分析
2017/11/14 Javascript
vue-cli 引入、配置axios的方法
2018/05/08 Javascript
快速解决处理后台返回json数据格式的问题
2018/08/07 Javascript
Mint UI实现A-Z字母排序的城市选择列表
2018/12/28 Javascript
Vue 的双向绑定原理与用法揭秘
2020/05/06 Javascript
[40:13]Ti4 冒泡赛第二天 iG vs NEWBEE 2
2014/07/15 DOTA
详解详解Python中writelines()方法的使用
2015/05/25 Python
Python实现复杂对象转JSON的方法示例
2017/06/22 Python
python逆向入门教程
2018/01/15 Python
Python元组常见操作示例
2019/02/19 Python
tensorflow 变长序列存储实例
2020/01/20 Python
Python按照list dict key进行排序过程解析
2020/04/04 Python
Python Opencv实现单目标检测的示例代码
2020/09/08 Python
python 简单的调用有道翻译
2020/11/25 Python
python爬虫如何解决图片验证码
2021/02/14 Python
CSS3弹性布局内容对齐(justify-content)属性使用详解
2017/07/31 HTML / CSS
意大利宠物用品购物网站:Bauzaar
2018/09/15 全球购物
100%有机精油,美容油:House of Pure Essence
2018/10/30 全球购物
体育教育毕业生自荐信
2013/11/21 职场文书
工作决心书范文
2014/03/11 职场文书