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

python爬虫如何写,有哪些成功爬取的案例

编写Python爬虫时,常用的库包括Requests、Beautiful Soup和Scrapy。以下是三个简单的Python爬虫案例,分别使用Requests和Beautiful Soup,以及Scrapy。

1. 使用Requests和Beautiful Soup爬取网页内容:

import requests
from bs4 import BeautifulSoupurl = "https://example.com"
response = requests.get(url)if response.status_code == 200:soup = BeautifulSoup(response.text, 'html.parser')# 在这里可以使用Beautiful Soup提取页面内容# 例如:titles = soup.find_all('h2')print(soup.title.text)
else:print(f"Failed to retrieve the page. Status code: {response.status_code}")

2. 使用Requests和正则表达式爬取图片:

import requests
import re
from urllib.parse import urljoinurl = "https://example.com"
response = requests.get(url)if response.status_code == 200:image_urls = re.findall(r'<img.*?src=["\'](.*?)["\']', response.text)for img_url in image_urls:full_url = urljoin(url, img_url)# 在这里可以下载图片或进行其他处理# 例如:response = requests.get(full_url); save_image(response.content, "image.jpg")print(full_url)
else:print(f"Failed to retrieve the page. Status code: {response.status_code}")

3. 使用Scrapy爬取网站:

首先,确保已安装Scrapy:

pip install scrapy

创建一个新的Scrapy项目:

scrapy startproject myproject
cd myproject

编辑Spider:

# myproject/spiders/myspider.py
import scrapyclass MySpider(scrapy.Spider):name = 'myspider'start_urls = ['https://example.com']def parse(self, response):# 在这里可以使用XPath或CSS选择器提取数据# 例如:titles = response.xpath('//h2/text()').getall()title = response.css('title::text').get()print(title)

运行Scrapy爬虫:

scrapy crawl myspider

这些例子只是入门,实际项目中可能需要处理更多的异常情况、使用代理、设置请求头等。爬取网页时,请确保遵守网站的Robots.txt文件和使用者协议。

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

相关文章:

  • PLC物联网网关BL104实现PLC协议转MQTT、OPC UA、Modbus TCP
  • explain工具优化mysql需要达到什么级别?
  • RHCE作业
  • 在Java中调企微机器人发送消息到群里
  • 鸿蒙开发(四)UIAbility和Page交互
  • K8s(七)四层代理Service
  • 鼎捷软件获评国家级智能制造“AAA级集成实施+AA级咨询设计”供应商
  • (循环依赖问题)学习spring的第九天
  • Kotlin的数据类
  • PTA 7-13 统计工龄
  • 算法常用思路总结
  • Leetcode 3016. Minimum Number of Pushes to Type Word II
  • node.js如何将webp转jpg图片
  • 达梦数据库 忘记 SYSDBA 密码 处理方法
  • SpringBoot ES 重建 Mapping
  • 【51单片机】矩阵按键
  • Redis- AOF刷盘策略
  • 标量、向量、矩阵和张量的区别?
  • 【51单片机】动态数码管
  • Webpack5入门到原理22:提升打包构建速度
  • EXCEL VBA获取幸运数字号码
  • 【标准IO】fseek函数、ftell函数、fflush函数、getline函数
  • VSCODE使用CMAKE显示命令无法找到
  • 【SpringCloud】微服务框架后端部署详细过程记录20240119
  • 《设计模式的艺术》笔记 - 桥接模式
  • Redis高并发分布式锁
  • 组件开发遇到的问题(vue的问题)
  • vue3前端开发,感受一下组合式api和VUE2选项式的差异
  • 电梯调度问题文献阅读
  • 文心一言 VS 讯飞星火 VS chatgpt (183)-- 算法导论13.4 7题