python 安装包+资料:点击此处跳转文末名片获取
作为一个程序员,要有会用自己的技术创造价值的自觉~
今天来给大家展示一下用python采集一下外包网站~
导入模块
# 导入数据请求模块 导入模块没有使用 灰色待机状态
import requests # 第三方模块 pip install requests (别人写好 开源代码,你可以直接去调用)
# 导入数据解析模块
import parsel # 第三方模块 pip install parsel
# 导入csv模块
import csv # 内置模块 不需要安装的
f = open('data.csv', mode='a', encoding='utf-8', newline='')
# 快速替换 选择替换内容 按住ctrl + R 输入正则
csv_writer = csv.DictWriter(f, fieldnames=[
'标题',
'招标',
'浏览人数',
'竞标人数',
'招标状态',
'价格',
'详情页',
])
csv_writer.writeheader()
# 1. 发送请求, 对于找到url地址发送请求
for page in range(1, 11):
print(f'正在爬取第{page}页的数据内容')
url = f'https://task.epwk.com/page{page}.html' # 确定网址
# 爬虫模拟(伪装成)浏览器 对于url地址发送请求
# 反爬 相当于别人给你打电话, 电话显示推销广告
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36'
}
response = requests.get(url=url, headers=headers) # 200状态码表示 请求成功 不代表得到数据了
# 2. 获取数据, 获取服务器返回数据
# print(response.text) # 返回html字符串数据内容 >>> 提取字符串数据 要使用re正则
# 3. 解析数据, 提取我们想要数据内容
selectors = parsel.Selector(response.text) # 需要转一下数据类型
# 有了解过css选择器吗? xpath根据标签节点提取数据, css选择器是根据标签属性提取数据
# 第一次提取, 获取所有div标签
divs = selectors.css('.itemblock') # 列表
for div in divs: # for遍历循环
# 定位有一个class类名字为title的div标签 下面a标签里面 title 属性
# attr() 属性选择器, 选择某一个标签里面属性内容
title = div.css('div.title a::attr(title)').get() # get 返回字符串, 并且取第一个标签数据
# strip() 去除字符串左右两端空格
modelName = div.css('div.modelName::text').get().strip() # 招标
num = div.css('div.browser div:nth-child(2) span::text').get().strip() # 浏览人数
num_1 = div.css('div.browser div:nth-child(3) span::text').get().strip() # 竞标人数
status = div.css('span.status::text').get().strip() # 招标状态
price = div.css('span.price::text').get().strip() # 价格
href = div.css('div.title a::attr(href)').get() # 详情页
# 4. 保存数据, 保存到表格数据 字典创建 键:值 >>> 键值对 键值对与键值对之间用 逗号隔开
# 值 可以是用任何数据类型, 键 大多数情况字符串数据类型 不能以数字
dit = {
'标题': title,
'招标': modelName,
'浏览人数': num,
'竞标人数': num_1,
'招标状态': status,
'价格': price,
'详情页': href,
}
csv_writer.writerow(dit)
print(title, modelName, num, num_1, status, price, href)
https://space.bilibili.com/555479228?spm_id_from=…0.0
希望大家都可以赚小钱钱~