2021/5/12爬虫课第二次周复盘

本文介绍使用Selenium和Python进行网页自动化及数据抓取的方法,并通过实例演示如何抓取天气信息、豆瓣电影排名等数据,同时讲解了CSV文件的操作技巧。

使用selenium时:
在发现写的脚本没任何问题的时候,找不到哪写错了,千万不要忘记是不是因为没有等待而造成元素未找到。
具体请参考
iterable 可迭代的

1.csv模块读写

1.通过writer对象
# with open('persons.csv','w',encoding='utf-8',newline='') as file_obj:
#     writer = csv.writer(file_obj)
#     writer.writerow(headers)
#     writer.writerows(persons)
1.通过DictWriter对象
# with open('persons.csv','w',encoding='utf-8',newline='') as file_obj:
#     Dwriter = csv.DictWriter(file_obj,headers)
#     Dwriter.writeheader()
#     Dwriter.writerows(persons)
# with open('persons.csv','r',encoding='utf-8',newline='') as file_obj:
#     reader = csv.reader(file_obj)#reader是对象
#     for x in reader:
#         print(x[2])


# with open('persons.csv', 'r', encoding='utf-8', newline='') as file_obj:
#     Dreader = csv.DictReader(file_obj)
#     for x in Dreader:
#         print(x['name'])

2.group与groups
python中的group方法

group()在正则表达式中用于获取分段截获的字符串,解释如下代码(代码来自网络):

import re

a = “123abc456”

print re.search("([0-9])([a-z])([0-9]*)",a).group(0) #123abc456,返回整体

print re.search("([0-9])([a-z])([0-9]*)",a).group(1) #123

print re.search("([0-9])([a-z])([0-9]*)",a).group(2) #abc

print re.search("([0-9])([a-z])([0-9]*)",a).group(3) #456

可以看出,正则表达式按照数字-字母-数字的顺序来获取相应字符串,那么分别就是“数字(group(1))–字母(group(2))–数字(group(3))”的对应关系,

其中,group(0)和group()效果相同,均为获取取得的字符串整体。

group和groups是两个不同的函数。

一般,m.group(N) 返回第N组括号匹配的字符。

而m.group() == m.group(0) == 所有匹配的字符,与括号无关,这个是API规定的。

m.groups() 返回所有括号匹配的字符,以tuple格式。

m.groups() == (m.group(1), m.group(2) …)

3.思路分析
(1)
问题:爬取7天的 天气情况 日期 天气状况温度 风力–> 保存到CSV

分析需求 要干什么事情 通过什么技术来解决
爬取7天的 天气情况 日期 天气状况温度 风力–> 保存到CSV

具体步骤(分析页面)
1.先明确目标url
通过分析我们发现要爬取的数据都在 ul class=“t clearfix” 这个标签当中,然后我们就去网页的源代码中确定了
2.先获取网页的源代码 整个html文件
3.从网页的源代码当中去匹配ul标签的数据
4.从ul标签里面去匹配li标签的数据
5.去解析li标签里面的数据
5.保存数据

(2)
豆瓣top250电影
问题: 爬取 电影的名字 评分 引言 详情页的url 保存到csv文件当中

具体步骤(分析页面)
1 明确url (是否是静态网页,对比源代码与检查)
2 先像目标url发起请求 获取网页源码
3 可以把网页源码通过 etree.HTML 生成一个element对象
element对象 通过xpath进行导航 电影的名字 评分 引言 详情页的url
4 我们可以把数据先保存到一个字典里面 {title:‘肖申克的救赎’,‘start’:9.7…} ,{title:‘霸王别姬’,‘start’:9.7…} 在把这些字典保存到一个列表当中
5 把列表中的数据存到csv文件当中
(3)
问题:爬取中国天气网 所有城市对应的温度把数据保存到csv当中
具体步骤(分析页面)
目标url
http://www.weather.com.cn/textFC/hb.shtml 华北
http://www.weather.com.cn/textFC/db.shtml 东北

1> 我们发现每一个url 对应一个大区。所以我们先搞定一个 在去搞定其他的
2> 1. 先找到整页的 div=conMidtab 标签的数据
2. 接下来去找每一个省或者直辖市所对应的table标签
3. 找table标签里面的tr标签(需要注意 要把前2个tr过滤掉)
4. 去tr标签里面找td标签(第0个是城市 倒数第二个是温度)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

笔记本IT

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

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

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

打赏作者

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

抵扣说明:

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

余额充值