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

用python写网络爬虫

识别网站所用技术

1. 安装模块

pip install builtwith

 2. 进行分析

>>> import builtwith
>>> builtwith.parse('http://www.baidu.com')
{'javascript-frameworks': ['Prototype', 'RequireJS', 'jQuery']}

寻找网站所有者

有些网站所有者会封禁网络爬虫 所以需要控制下载速度,可以使用WHOIS协议查询域名的注册者

python-whois · PyPI


 

通过命令行下载 

pip install python-whois

执行

>>> import whois
>>> print whois.whois('baidu.com')

编写第一个网络爬虫

1. 下载网页

要想爬取一个网页,首先要将其下载下来

py2写法:

import urllib2

def download(url) :
  
    return urllib2.urlopen(url).read()

py3写法

import urllib.request

# 发起请求
response = urllib.request.urlopen("https://www.baidu.com")
data = response.read()

# 保存到文件
with open("output.html", "wb") as f:
    f.write(data)

2. 设置用户代理 

在 Python 3 中,使用 urllib.request 模块发送 HTTP 请求时,默认的用户代理(User-Agent)是 Python-urllib/3.x(其中 x 是你使用的 Python 3 的具体版本号)。

例如,如果你使用 Python 3.8,默认的用户代理字符串可能是 Python-urllib/3.8。

这个默认用户代理在某些网站上可能会被识别为爬虫并被拒绝访问。如果你需要模拟浏览器行为,通常需要自定义用户代理,例如:

import urllib.request

url = "https://www.baidu.com"
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}

req = urllib.request.Request(url, headers=headers)
response = urllib.request.urlopen(req)
content = response.read()

上面代码示例中设置的用户代理(User-Agent)是:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36

这个用户代理字符串表示的是 Windows 10 操作系统上的 Chrome 91 浏览器。这种用户代理是非常典型的现代浏览器标识,通常用于模拟真实的浏览器访问,以避免被网站识别为爬虫或自动化程序而被拒绝访问。

相关文章:

  • 如何用Spring AI构建MCP Client-Server架构
  • 动手实践:单机安装高性能列式存储数据库ClickHouse
  • 根据模板将 Excel 明细数据生成 PDF 文档 | PDF实现邮件合并功能
  • 大数据学习(85)-Flume详解
  • mysql学习-索引规则
  • 蓝桥杯 回文字符串
  • 09_JavaScript数据操作方法_数组2
  • 基于Zookeeper的微服务配置管理与灰度发布实战指南
  • WEB API 设计规范
  • Leetcode——1047. 删除字符串中的所有相邻重复项
  • 阶跃星辰开源300亿参数视频模型Step-Video-TI2V:运动可控+102帧长视频生成
  • Hyperlane 似乎是一个轻量级、高性能的 Rust HTTP 服务器库
  • Redis原理:Monitor 实现
  • 雕马快租:直播设备租赁新趋势,低成本重构传统营销模式的破局之道
  • 缓存相关问题
  • 单例模式在Python中的实现和应用
  • 【SpringBoot篇】SpringBoot的自动装配原理
  • 安装SQL Server 2022常见问题和环境配置
  • http://noi.openjudge.cn——4.7算法之搜索_1814:恼人的青蛙
  • unable to load vboxguest kernel module
  • 王建军被免去证监会副主席职务
  • “美诚月饼”佛山生产公司已注销,涉小杨哥带货“香港传统品牌”产地争议事件
  • 凤阳文旅局回应鼓楼瓦片脱落:鼓楼楼宇系仿古建筑,动工时已履行报批手续
  • 夜读丨永不掉电的陪伴
  • 甘肃白银煤矿透水事故最新进展:3名被困矿工已无生命体征
  • 一日双赛“莎头组合”赢得强势,但国乒已开始品尝输球滋味