薅羊毛赚客吧0818爬虫有奖活动 python 思路与实现

查看 74|回复 9
作者:zigzag   
个人版本python==3.8.6  requests==2.31.0
要点思路:
分析网页结构
如果
urls = [f'http://www.0818tuan.com/list-1-{i}.html' for i in range(0,11)]
改成
urls = [f'http://www.0818tuan.com/list-1-{i}.html' for i in range(0,90)]
爬取的活动会更多一点,时效性会差一点
知识点:
列表是一个有序的集合,可以包含任意类型的元素,并且可以通过索引访问。
字典是一个无序的集合,它存储键值对(key-value pairs),其中键是唯一的,可以用来查找与之相关联的值。
取随机数
正则(难点)
写入文件[Python] 纯文本查看 复制代码#python==3.8.6#requests==2.31.0
#[] 创建了一个空列表(list)。列表是一个有序的集合,可以包含任意类型的元素,并且可以通过索引访问。
#{} 创建了一个空字典(dictionary)。字典是一个无序的集合,它存储键值对(key-value pairs),其中键是唯一的,可以用来查找与之相关联的值。
#取随机数
#写入文件
import requests
import re
import csv
# 生成链接列表
urls = [f'http://www.0818tuan.com/list-1-{i}.html' for i in range(0,11)]
# 设置请求头
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36'
}
matches = []
for url in urls:
    # 发送HTTP GET请求
    response = requests.get(url, headers=headers)
    # 确保请求成功
    if response.status_code == 200:
        # 注意:这里的正则表达式需要根据实际的HTML结构进行调整
        matches_temp = re.findall(r'[d\/](\d{7,}).html" target="_blank" title="([\u4e00-\u9fa5].*)" ', response.text)
        matches.extend(matches_temp)  # 将找到的匹配项添加到matches列表中
# 初始化空字典来存储URL和标题的配对
match_dict = {}
# 遍历matches列表构建字典
for match in matches:
    match_id = match[0]
    match_title = match[1]
    url = f"http://www.0818tuan.com/xbhd/{match_id}.html"
    match_dict[url] = match_title
with open("爬取结果.csv", 'w', newline='', encoding="GBK",errors='ignore') as f:
    writer = csv.writer(f)
    writer.writerow(['url链接', '标题'])  # 写入表头
    # 遍历字典并写入匹配结果
    for url, title in match_dict.items():
         writer.writerow([url, title])

是一个, 字典

happyxuexi   

能实时判断新增的吗?
谢谢分享。
cbypm1984   

大佬怎么用
angelabebe   

谢谢分享。
anning666   

边学python,边实战练习,很好的学习方式呢~~~
tyq2003   

谢谢楼主分享,为楼主点赞!
zucker   

一会儿就封你ip,意义不大
susong987   

这个不错可以学习
milu1123   

刚看了一下,代码的思路还可以改进!!
sztoplon   

顶贴收藏,学习一下
您需要登录后才可以回帖 登录 | 立即注册

返回顶部