爬虫模板(附完整代码+案例)

本文分享了一个Python爬虫模板,包括如何使用requests库发送POST请求,处理URL、headers、cookies和params,以及数据清洗方法(如正则表达式、XPath、字典和BeautifulSoup)。最后,将抓取的数据写入Excel文件并附带了完整的示例代码。

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

背景

  • 像我经常需要使用一些爬虫脚本去获取某些网站的信息,所以提供一个模板,只要改一下请求的网址、请求参数、Cookie,或者是headers 的参数,就可以使用,所以准备一个模板分享一下

1、写入空白Excel

wb = openpyxl.Workbook()
ws = wb.active
ws.append(['表头','表头','表头','表头','表头','表头',..........])

2、提供 URL、headers 、cookies、params

url = '请求URL'
cookies = {
    'Cookie': '值'
    }



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



params = {
'xxx1': '值',
'xxx2': '值',
}

3、数据清洗,这里大家各有各的办法,依情况而定

res_data= requests.post(url=url, params=params, headers=headers, cookies=cookies)
# print(res_data.text)
res_data.encoding = "utf-8"
data = json.loads(res_data.text)1 = data['键']2 = data['键'3 = data['键']4 = data['键']5 = data['键']6 = data['键']7 = data['键']

可以使用re正则表达式,如:

可以使用xpath,如:

可以使用字典,如:

可以使用bs4,如:

4、储存

ws.append([1,2,3,4,5,6,.....])


wb.save("保存结果.xlsx")

5、完整模板代码

# -*- coding: UTF-8 -*-
'''
@Project :项目名称
@File    :程序.py
@IDE     :PyCharm 
@Author  :一晌小贪欢
@Date    :2024/01/22 15:33
'''

import json
import openpyxl
import requests

# 创建空白Wxcel
wb = openpyxl.Workbook()
ws = wb.active
ws.append(['表头','表头','表头','表头','表头','表头',..........])



url = '请求URL'
cookies = {
    'Cookie': '值'
    }



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



params = {
'xxx1': '值',
'xxx2': '值',
}


res_data= requests.post(url=url, params=params, headers=headers, cookies=cookies)
# print(res_data.text)
res_data.encoding = "utf-8"
data = json.loads(res_data.text)1 = data['键']2 = data['键'3 = data['键']4 = data['键']5 = data['键']6 = data['键']7 = data['键']
'''
'''
'''

ws.append([1,2,3,4,5,6,.....])


wb.save("保存结果.xlsx")

更新2POST请求(2024-4-9)

# headers信息
headers = {
    "Cookie": "",
    # 可能需要添加其他headers,如Content-Type等
    "Content-Type": "application/json"  # 根据API要求设置正确的Content-Type
}

params = {
   "键": "值",
   "键": "值",
   "键": "值",
   "键": "值"",
   "键": "值"
}


# 发起POST请求
response = requests.post(
    url="https://xxxxxxx",
    data=json.dumps(params),
    headers=headers
)

if response.status_code == 200:
	# 解析响应内容
	data = response.json()
else:
	print(f"请求失败,状态码:{response.status_code}")

更新POST请求

import http.client
import json
import openpyxl

conn = http.client.HTTPSConnection("srm.dhvisiontech.com")
payload = json.dumps({
   "ettaCheckNo": "",
   "ettaNo": "",
   "ettaDeclareContractNo": "",
   "ettaSegmentType": "",
   "ettaBusinessOrderTimeFrom": "2024-8-3 00:00:00",
   "ettaBusinessOrderTimeTo": "2024-9-3 00:00:00",
   "ettaReqArrivalDateFrom": "",
   "ettaReqArrivalDateTo": "",
   "ettaTradeTerms": "",
   "ettaLoadingMethod": "",
   "ettaTranType": "",
   "ettaOrderBelongsCode": "",
   "ettaExportPortName": "",
   "ettaDesCountryName": "",
   "ettaDesPortName": "",
   "shipDateFrom": "",
   "shipDateTo": "",
   "queryCarrierName": "",
   "size": 1000,
   "current": 1
})
headers = {
   'ScpWebAuthorization': '',
   'Authorization': 'Bearer',
   'Cookie': '',
   'User-Agent': 'Apifox/1.0.0 (https://apifox.com)',
   'Content-Type': 'application/json'
}
conn.request("POST", "/dahua-scp-logistics/overseaTask/pageList", payload, headers)
res = conn.getresponse()
data = res.read()
json_data = json.loads(data)


count = 0
for i in json_data['data']['records']:
   count += 1
   print(f'数量-{count},运输单号:{i["ettaNo"]},交接单号:{i["ettaCheckNo"]},报关合同号:{i["ettaDeclareContractNo"]}')
   payload2 = json.dumps({
      'ettaCheckNo': i["ettaCheckNo"],
      'ettaDeclareContractNo': i["ettaDeclareContractNo"],
      'ettaNo': i["ettaNo"]
   })

   conn.request("POST", "/dahua-scp-logistics/ship/getTaskInfo", payload2, headers)
   res = conn.getresponse()
   data = res.read()
   json_data = json.loads(data)

总结:求关注+收藏+点赞

### Python 爬虫示例代码 #### 使用 `requests` 和 `BeautifulSoup` 对于简单的网页抓取任务,可以使用 `requests` 库来获取网页内容,并利用 `BeautifulSoup` 来解析 HTML 文档。下面是一个具体的例子: ```python import requests from bs4 import BeautifulSoup url = 'https://example.com' response = requests.get(url) if response.status_code == 200: soup = BeautifulSoup(response.content, 'html.parser') # 找到所有的链接 links = [] for a_tag in soup.find_all('a', href=True): links.append(a_tag['href']) print(links) else: print(f"Failed to retrieve the webpage. Status code: {response.status_code}") ``` 这段代码展示了如何通过请求目标网站并提取其中的所有超链接[^2]。 #### 利用 `Scrapy` 框架构建更复杂的爬虫应用 当面对更加复杂的数据采集需求时,则推荐采用专门设计的 Scrapy 框架。它不仅提供了丰富的功能模块,还能够处理并发请求、自动重试失败的任务等功能。这里给出一段基于 Scrapy 的基础模板: ```python import scrapy class ExampleSpider(scrapy.Spider): name = "example" start_urls = ['https://example.com'] def parse(self, response): page_title = response.css('title::text').get() yield {'title': page_title} ``` 此段代码定义了一个名为 `ExampleSpider` 的类继承自 `scrapy.Spider` 并实现了基本的功能方法 `parse()` ,用于分析响应数据并返回所需的结果集。 #### 基础 GET 请求案例 如果只是想快速测试某个 URL 是否可达及其返回的内容,那么可以直接运用内置的标准库 urllib 或者第三方库 requests 完成这项工作。如下所示的是一个极为简易的例子,仅需几行代码即可实现对指定站点发起访问请求并显示其首页HTML源码片段[^3]: ```python import requests response = requests.get("http://www.baidu.com") response.encoding = response.apparent_encoding print("状态码:" + str(response.status_code)) print(response.text[:100]) # 只打印前一百个字符以便查看部分输出 ``` 以上就是几种不同层次难度下的 Python 编写 Web Crawler 的方式介绍,每种方案都有各自的特点和适用场景,在实际开发过程中可以根据具体的需求选择合适的技术栈来进行编程实践。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小庄-Python办公

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值