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基本语法经典教程
Mar 11 Python
Python中字符串的格式化方法小结
May 03 Python
浅谈Python类里的__init__方法函数,Python类的构造函数
Dec 10 Python
python实现图片识别汽车功能
Nov 30 Python
python使用selenium实现批量文件下载
Mar 11 Python
python操作日志的封装方法(两种方法)
May 23 Python
python的pyecharts绘制各种图表详细(附代码)
Nov 11 Python
Python多重继承之菱形继承的实例详解
Feb 12 Python
如何在keras中添加自己的优化器(如adam等)
Jun 19 Python
python实现简单贪吃蛇游戏
Sep 29 Python
Python实现生活常识解答机器人
Jun 28 Python
Pygame Event事件模块的详细示例
Nov 17 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中的三元运算符使用说明
2011/07/03 PHP
ThinkPHP让分页保持搜索状态的方法
2014/07/02 PHP
php 三大特点:封装,继承,多态
2017/02/19 PHP
PHP实现验证码校验功能
2017/11/16 PHP
深入学习微信网址链接解封的防封原理visit_type
2019/08/15 PHP
数据结构之利用PHP实现二分搜索树
2020/10/25 PHP
网页上的Javascript编辑器和代码格式化
2010/04/25 Javascript
js 动态修改css文件用到了cssRule
2014/08/20 Javascript
node.js中的http.response.end方法使用说明
2014/12/14 Javascript
使用RequireJS优化JavaScript引用代码的方法
2015/07/01 Javascript
轻松玩转BootstrapTable(后端使用SpringMVC+Hibernate)
2017/09/06 Javascript
javascript 判断用户有没有操作页面
2017/10/17 Javascript
详解webpack+express多页站点开发
2017/12/22 Javascript
angular实现页面打印局部功能的思考与方法
2018/04/13 Javascript
bootstrap动态调用select下拉框的实例代码
2018/08/09 Javascript
详解easyui 切换主题皮肤
2019/04/04 Javascript
在Layui中操作数据表格,给指定单元格添加事件示例
2019/10/26 Javascript
JavaScript之scrollTop、scrollHeight、offsetTop、offsetHeight等属性学习笔记
2020/07/15 Javascript
vue-cli3项目打包后自动化部署到服务器的方法
2020/09/16 Javascript
零基础写python爬虫之urllib2使用指南
2014/11/05 Python
理解Python垃圾回收机制
2016/02/12 Python
python 3.6 +pyMysql 操作mysql数据库(实例讲解)
2017/12/20 Python
详解Python3.6安装psutil模块和功能简介
2018/05/30 Python
TensorFlow数据输入的方法示例
2018/06/19 Python
python双端队列原理、实现与使用方法分析
2019/11/27 Python
python中shell执行知识点
2020/05/06 Python
Python图像处理二值化方法实例汇总
2020/07/24 Python
python绘制汉诺塔
2021/03/01 Python
兰蔻美国官网:Lancome美国
2017/04/25 全球购物
澳大利亚领先的折扣药房:Chemist Direct(有中文站)
2018/11/24 全球购物
后进生转化工作制度
2014/01/17 职场文书
会计专业求职信范文
2014/03/16 职场文书
专题组织生活会思想汇报
2014/10/01 职场文书
刘公岛导游词
2015/02/05 职场文书
2016年小学生清明节广播稿
2015/12/17 职场文书
Python数组变形的几种实现方法
2022/05/30 Python