Python爬虫

本文介绍了Python内置库urllib的使用,包括request模块中的HTTPResponse对象的各种方法,如读取内容、获取头信息和状态码。还讲解了urlretrieve用于文件下载,以及如何进行URL编码。进一步,文章提到了自定义Request对象进行POST请求,处理异常,以及使用Handler和ProxyHandler进行代理设置。此外,文章还提及了反爬策略如设置UA和Cookie,并简要介绍了XPath解析、bs4解析库以及selenium自动化测试工具。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.urllib:Python内置库

1.1 request 模块

  1. 引入该模块

    from urllib import request

    request.urlopen()返回一个对象

    decode('utf-8') #将bytes类型转化为str
  2. 一个类型六个方法

    • 一个类型 :<class 'http.client.HTTPResponse'>

    • request.urlopen().read(num):按字节读取

    • request.urlopen().readline():按行读取,只读取一行

    • request.urlopen().readlines():按行读取,直到结束

    • request.urlopen().getheaders():获取请求头信息

    • request.urlopen().getcode():获取状态码

    • request.urlopen().geturl():获取url

1.2 ulrlib下载

request.urlretrieve(下载地址, 资源名字) 

1.3 转码

  • parse 可以做转码

from urllib import request, parse
  • parse.quote('凌凌漆') :将中文转换成Unicode编码

  • parse.urlencode(data) :将参数里面的中文转换成Unicode编码, data必须是一个字典

1.4 Request():定制请求对象

  • request.Request()可以定制请求头和POST请求的参数等

url = request.Request(url=my_url, headers=headses)
  • 用urlope()打开

my_html = request.urlopen(url)

1.4.1 POST请求

  • request.Request()对象传入data的时候,该请求就为POST请求

1.5 异常

  • HTTPError

  • URLError

  • 常用的两种异常

try:
    req = request.Request(url, None, headers)
​
    # 获取handler对象
    handler = request.HTTPHandler()
​
    # 获取opener对象
    opener = request.build_opener(handler)
​
    # 调用open()方法
    response = opener.open(req)
​
    content = response.read().decode('utf-8')
​
    print(content)
except error.HTTPError as e:
    print('No response')

1.6 Handler处理

req = request.Request(url, None, headers)
​
# 获取handler对象
handler = request.HTTPHandler()
​
# 获取opener对象
opener = request.build_opener(handler)
​
# 调用open()方法
response = opener.open(req)
​
content = response.read().decode('utf-8')
​
print(content)

1.7 代理

  • request.ProxyHandler(proxies=proxies)

proxies = {
    'http': '61.216.185.88'
}
req = request.Request(url, None, headers)
handler = request.ProxyHandler(proxies=proxies)
opener = request.build_opener(handler)
response = opener.open(req)

2.反爬手段

  1. 设置UA

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36'
}
  1. 设置Cookie

3.XPath解析

4. bs4解析

5.selenium

  1. 安装chromedriver.exe谷歌驱动,如果是其他浏览器则需要安装对应浏览器的驱动

    CNPM Binaries Mirror

  2. 安装selenium pip install selenium

  3. 配置

    from selenium import webdriver
    
    # 不自动关闭浏览器
    option = webdriver.ChromeOptions()
    option.add_experimental_option("detach", True)
    
    # 将option作为参数添加到Chrome中
    driver = webdriver.Chrome(chrome_options=option)
    
    url = 'https://pic.netbian.com'
    
    driver.get(url)
    1. 相关API

      driver.forward():前进

      driver.back():后退

      driver.refresh():刷新页面

n = 3

### Python爬虫的学习资源与使用方法 Python爬虫是一种高效的工具,用于自动化的网络信息采集。由于其丰富的库支持以及简洁易懂的语法特性,Python 成为了编写网络爬虫的最佳选择之一[^3]。 #### 学习Python爬虫的基础知识 学习Python爬虫不仅涉及理论知识的理解,还需要通过实际操作来加深印象。在移动设备上也可以轻松完成这些任务,因为手机端的Python环境配置较为简便,可以随时随地进行实践练习[^1]。 #### 推荐的Python爬虫教程列表 以下是几份高质量的Python爬虫教程推荐: - **基础篇** - 《一只小爬虫》[^2] - 《Python与简单网络爬虫的编写》[^2] - **进阶篇** - 《[Python]网络爬虫(五):urllib2的使用细节与抓站技巧》[^2] - 《[Python]网络爬虫(十):一个爬虫的诞生全过程(以山东大学绩点运算为例)》[^2] - **高级功能** - 《Python爬虫——抓取网页并解析HTML》[^2] - 《Python正则表达式指南》[^2] 除了上述具体的文章外,《Python爬虫新手指南及简单实战》也是一份非常适合初学者的内容,其中包含了详细的案例分析和代码演示[^3]。 #### 实践中的关键技术点 当开始构建自己的第一个爬虫项目时,需要注意以下几个方面: 1. 数据请求模块的选择,比如`requests`或内置的`urllib`。 2. HTML页面解析技术的应用,例如BeautifulSoup或者lxml库。 3. 对于复杂的数据提取需求,则可能需要用到正则表达式的辅助[^2]。 下面展示一段简单的爬虫脚本作为参考: ```python import requests from bs4 import BeautifulSoup url = 'https://example.com' response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') titles = soup.find_all('h1') for title in titles: print(title.text.strip()) ``` 此段程序展示了如何访问目标网址,并从中提取所有的标题标签内容[^3]。 #### 工具扩展建议 如果计划进一步深入研究大数据量场景下的爬虫应用,那么像Pandas这样的数据分析框架将会非常有用。它可以方便地管理和转换所收集到的信息至结构化形式以便后续统计分析工作[^4]。 --- 相关问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值