当前位置: 首页 > news >正文

Python爬虫子页面并写入text代码

这是工具类 

class UrlManager():"""url管理器"""def __init__(self):self.new_urls = set()self.old_urls =set()def add_new_url(self,url):if url is None or len(url) == 0:returnif url in self.new_urls or url in self.old_urls:returnself.new_urls.add(url)def add_new_urls(self,urls):if urls is None or len(urls) == 0:returnfor url in urls:self.add_new_url(url)def get_url(self):if self.has_new_url():url = self.new_urls.pop()self.old_urls.add(url)return urlelse:return Nonedef has_new_url(self):return len(self.new_urls) > 0

这是实现代码,实现方式:传入一个母页面,可以爬虫出母页面中的链接,并将链接放入Url_manager,进行下一个页面的爬虫,并将爬虫出来的链接都写入一个text里面进行记录 

from utils import Url_manager
import requests
from  bs4 import BeautifulSoup
import re
root_url="https://xxxxxxx"urls= Url_manager.UrlManager()
urls.add_new_url(root_url)fout = open("OK.txt","w")
while urls.has_new_url():curr_url =urls.get_url()r = requests.get(curr_url)if r.status_code != 200:print("error,return status_code is not 200",curr_url)continuesoup = BeautifulSoup(r.text,"lxml")links = soup.find_all("a")for link in links:href =link.get("href")newnew_url =curr_url+hrefpattern1 = r'https://xxxxx20\d{2}/\d{2}/\d{8}/[a-zA-Z0-9]\S'if re.match(pattern1, newnew_url):url_ = newnew_url[29:]fout.write("%s\n" % url_)fout.flush()print("success:%s\n" % url_)if href is None:continuepattern =r'20\d+/|\d{2}/|\d{8}/'if re.match(pattern,href):url = curr_url+hrefurls.add_new_url(url)
fout.close()

http://www.lryc.cn/news/293120.html

相关文章:

  • 《PyTorch基础教程》01 搭建环境 基于Docker搭建ubuntu22+Python3.10+Pytorch2+cuda11+jupyter的开发环境
  • MySQL进阶之触发器
  • 循环神经网络RNN专题(01/6)
  • C# 怎么判断屏幕是第几屏幕?屏幕是垂直还是水平?屏幕的分辨率?
  • 在 SQL Server 中使用 SQL 语句查询不同时间范围的数据
  • 学习使用Flask模拟接口进行测试
  • 深度学习快速入门--7天做项目
  • Request Response 基础篇
  • 数据爬虫是什么
  • Java注解与策略模式的奇妙结合:Autowired探秘
  • Datax3.0+DataX-Web部署分布式可视化ETL系统
  • 【Java 数据结构】排序
  • Deepin如何开启与配置SSH实现无公网ip远程连接
  • 【Springcloud篇】学习笔记十(十七章):Sentinel实现熔断与限流——Hystrix升级
  • 【算法与数据结构】718、1143、LeetCode最长重复子数组 最长公共子序列
  • C# SSH.NET 长命令及时返回
  • Rust学习之Features
  • 云计算基础(云计算概述)
  • 【机器学习】科学库使用手册第2篇:机器学习任务和工作流程(已分享,附代码)
  • 【React】前端项目引入阿里图标
  • Javascript入门:第三个知识点:javascript里的数据类型、运算符
  • 最新版国产会声会影2024新功能爆料
  • Pandas处理Excel文件的实用指南 - Python开发技巧XI
  • 泰克示波器(TBS2000系列)触发功能使用讲解——边沿触发
  • C++学习Day01之C++对C语言增强和扩展
  • 【文件上传WAF绕过】<?绕过、.htaccess木马、.php绕过
  • flutter如何实现省市区选择器
  • Python——将Pyaudio的frame音频数据转换成wave格式
  • Vue 上门取件时间组件
  • 学习python第一天