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 相关文章推荐
tornado框架blog模块分析与使用
Nov 21 Python
python连接mysql调用存储过程示例
Mar 05 Python
Python实现队列的方法
May 26 Python
使用sklearn之LabelEncoder将Label标准化的方法
Jul 11 Python
python ddt数据驱动最简实例代码
Feb 22 Python
Python基本数据结构与用法详解【列表、元组、集合、字典】
Mar 23 Python
python lambda表达式在sort函数中的使用详解
Aug 28 Python
Django设置Postgresql的操作
May 14 Python
基于Python爬虫采集天气网实时信息
Jun 05 Python
利用PyTorch实现VGG16教程
Jun 24 Python
Python读取ini配置文件传参的简单示例
Jan 05 Python
Django使用echarts进行可视化展示的实践
Jun 10 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 SPL标准库中的常用函数介绍
2015/05/11 PHP
深入解析PHP中foreach语句控制数组循环的用法
2015/11/30 PHP
PHP的Yii框架入门使用教程
2016/02/15 PHP
php数据访问之增删改查操作
2016/05/09 PHP
yii2实现Ueditor百度编辑器的示例代码
2018/11/02 PHP
js 覆盖和重载 函数
2009/09/25 Javascript
JavaScript 存在陷阱 删除某一区域所有节点
2010/05/10 Javascript
js获取元素相对窗口位置的实现代码
2014/09/28 Javascript
jQuery中inArray方法注意事项分析
2016/01/25 Javascript
使用jQuery的easydrag插件实现可拖动的DIV弹出框
2016/02/19 Javascript
javascript正则表达式之分组概念与用法实例
2016/06/16 Javascript
Angular在一个页面中使用两个ng-app的方法
2017/02/20 Javascript
浅析vue component 组件使用
2017/03/06 Javascript
php main 与 iframe 相互通讯类(js+php同域/跨域)
2017/09/14 Javascript
vue.js层叠轮播效果的实例代码
2018/11/08 Javascript
vue-路由精讲 二级路由和三级路由的作用
2020/08/06 Javascript
微信小程序实现打卡签到页面
2020/09/21 Javascript
Python 爬虫模拟登陆知乎
2016/09/23 Python
使用Python3制作TCP端口扫描器
2017/04/17 Python
Python常见异常分类与处理方法
2017/06/04 Python
Python使用matplotlib 画矩形的三种方式分析
2019/10/31 Python
Python操作SQLite/MySQL/LMDB数据库的方法
2019/11/07 Python
Django restframework 框架认证、权限、限流用法示例
2019/12/21 Python
python:目标检测模型预测准确度计算方式(基于IoU)
2020/01/18 Python
python访问hdfs的操作
2020/06/06 Python
基于matplotlib中ion()和ioff()的使用详解
2020/06/16 Python
Pandas对每个分组应用apply函数的实现
2020/12/13 Python
Python3+Django get/post请求实现教程详解
2021/02/16 Python
动物科学专业毕业生的自我评价
2013/11/29 职场文书
自荐信写法介绍
2014/01/25 职场文书
应聘销售主管的求职信
2014/04/26 职场文书
职业道德模范事迹材料
2014/08/24 职场文书
法英专业大学生职业生涯规划范文:衡外情,量己力!
2014/09/23 职场文书
新郎答谢词
2015/01/04 职场文书
一年级数学下册复习计划
2015/01/17 职场文书
英国数字版游戏销量周榜公布 《小缇娜的奇幻之地》登顶
2022/04/03 其他游戏