python爬虫之快速构造标准格式headers

本文介绍了一种利用Python快速生成HTTP请求Header头字典的方法,适用于爬虫开发及自动化测试场景,通过简单的代码实现高效便捷的操作。

0x01 源码

a = '''
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding:gzip, deflate
Accept-Language:zh-CN,zh;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Cookie:uuid_tt_dd=1480340313111808904_20170920; Hm_lvt_6bcd52f51e9b3dce32bec4a3997715ac=1505918405; Hm_lpvt_6bcd52f51e9b3dce32bec4a3997715ac=1505918410; dc_tos=owl22x; dc_session_id=1505918405193_0.8442837642502332; __message_sys_msg_id=0; __message_gu_msg_id=0; __message_cnel_msg_id=0; __message_district_code=000000; __message_in_school=0
Host:www.csdn.net
If-Modified-Since:Wed, 20 Sep 2017 14:20:09 GMT
If-None-Match:W/"59c27919-18436"
Upgrade-Insecure-Requests:1
User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.91 Safari/537.36
'''

print({i.split(":",1)[0]:i.split(":")[1] for i in a.split("\n")[1:-1]})

0x02 故事背景

我们在制作爬虫、编写自动访问、用户名密码爆破等一系列与网站自动化交互的脚本时,往往离不开header头的制作,从浏览器上一个一个粘贴,然后制作成字典形式,忒费劲,至少俺是这么想的

自从构造了半自动化生成生成header头后,腰也不疼了,腿也不酸了,一口气爬到七楼都不用喘气了,贼开心

废话不多说,上图

这里写图片描述

0x03 代码解析

在此之前,俺再赘述一下,找到要操作的网站

F12(笔者用的是谷歌浏览器)- network(如果没有东西的话,刷新一下网页就好了)- 选择第一个链接 - headers-Request Headers-复制自己所需要的就好了

上图
这里写图片描述

  1. 用三引号包裹粘贴的headers信息,因为三引号支持多行文本
  2. 以换行符分割

    a.split("\n")[1:-1]

    此时返回一个列表,列表元素是各行的字符串,后面的切片操作是因为,咱们在赋值a的时候在开头三引号后面加了回车,结尾的三引号前面加了回车,为了去除这两个回车

  3. 将每一个的字符串以 : (冒号分割),并且指定分割一次

    i.split(":",1) for i in a.split("\n")[1:-1]

    此时返回的是n(行数)个列表,每个列表有两个元素,第一个是冒号之前的元素,第二个是冒号之后的元素

    之所以没有re模块来进行多个分隔符进行分割的原因就是,冒号的分割只能进行一次,比如header头里面的

    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:54.0) Gecko/20100101 Firefox/54.0

    value的值里面存在了冒号,如果分割多次的话,便会产生bug

  4. 将每一个列表里的第一个值作为字典里面的key,第二个值作为字典里的value

    {i.split(":",1)[0]:i.split(":",1)[1] for i in a.split("\n")[1:-1]}
  5. gameover

0x04 临别感言

笔者特别喜欢用推导式来写东西,感觉特别有趣,因此在本程序中使用了字典推导式

最后欢迎各位大表哥再次光临 ^_^

### 常州价格通数据爬取方法 为了通过 Python 爬虫抓取常州价格通网站上的数据,可以按照以下思路设计解决方案: #### 1. **分析目标网站结构** 在开始编写爬虫之前,需要了解目标网站的 URL 结构以及数据展示的方式。通常情况下,网页中的商品或服务的价格信息会嵌套在 HTML 或 JavaScript 中。可以通过浏览器开发者工具(F12)查看页面源码并定位到所需的数据字段。 例如,在访问 `http://www.czjgt.com` 这样的站点时,需注意是否存在分页机制或者动态加载的内容[^3]。如果存在分页,则需要提取每一页对应的链接模式;如果是 AJAX 动态加载,则应找到其接口地址及其参数设置。 #### 2. **构建请求头与URL模板** 根据实际观察到的目标网址特点来定制化构造HTTP GET 请求头部信息(Headers),模拟真实用户的浏览行为以规避反爬策略。同时定义好基础URL路径加上可变部分形成完整的查询字符串形式用于后续循环调用不同页面下的资源位置。 以下是简单的代码片段演示如何发起 HTTP 请求: ```python import requests from bs4 import BeautifulSoup base_url = "http://example.czjgt.com/page={}" headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)' } def fetch_data(page_num): url = base_url.format(page_num) response = requests.get(url, headers=headers) if response.status_code == 200: soup = BeautifulSoup(response.text, 'html.parser') items = parse_items(soup) return items raise Exception(f"Failed to load page {page_num}") ``` 此段程序展示了如何利用 Requests 库发送带自定义 Headers 的GET 请求,并接收返回的结果进行初步处理[^2]。 #### 3. **解析HTML文档内容** 采用第三方库如 Beautiful Soup 来简化DOM树操作过程从而方便地抽取特定标签内的文字值或者其他属性值作为最终采集成果的一部分保存下来供进一步加工使用。 继续上面的例子补充完成 item 解析逻辑如下所示 : ```python def parse_items(soup): results = [] for entry in soup.select('.item-class'): # 替换为具体的选择器表达式 title = entry.find('h2').get_text(strip=True) price = float(entry.select_one('.price-tag')['data-value']) result = {'title': title, 'price': price} results.append(result) return results ``` 这里假设每个条目都包裹在一个具有 class="item-class" 属性的 div 容器里边,并且其中包含了 h2 子节点表示名称还有另一个带有 data-value 特性的 span 元素记录金额数值[^1]。 #### 4. **存储收集来的资料** 最后一步就是考虑怎样持久化这些临时变量里的对象集合了。可以选择写入 CSV 文件以便于导入 Excel 表格软件做统计图表可视化等工作流程当中去执行下去。 下面给出一个例子说明如何将前面获得的商品清单导出成标准格式文件存盘备用: ```python import csv filename = 'prices.csv' fields = ['Title', 'Price'] with open(filename, mode='w') as f: writer = csv.DictWriter(f, fieldnames=fields) writer.writeheader() writer.writerows(all_results) ``` 以上即完成了整个从网络读取公开可用的信息直至本地归档整理全流程概述介绍。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值