python爬虫快速入门
创始人
2025-05-28 10:18:52
0

selector库

xpath语法常用规则
nodename 选取此节点的所有子节点
/ 从当前节点选取直接子节点
// 从当前节点选取子孙节点,而不考虑它们的位置,跨节点获取标签
. 选取当前节点
… 选取当前节点的父节点
@ 选取属性
text() 选取文本
可以配合使用.//意思是当前节点所有子孙节点

1、获取标签的xpath路径
在这里插入图片描述
在这里插入图片描述

2、通过class获取table下的tbody标签的tr列表,获取到的是一个数组(注:前面加.)
在这里插入图片描述

3、从数组的第二个开始获取(注:前面加.)

all_trs = response.xpath("//table[@class='forums_tab_table']//tr")[2:]

4、获取tr标签的第二个td标签(注:前面加.)

if tr.xpath(“.//td[1]/span/text()”).extract():
status = tr.xpath(“.//td[1]/span/text()”).extract()[0]
topic_item[“status”] = status

5、获取text,获取到的东西都是数组,所以我们要获取第0个元素(注:前面加.)

 create_time = answer_item.xpath(".//label[@class='date_time']/text()").extract()[0]

6、获取a标签里面的href的值(注:前面加.)

 next_page = response.xpath("//a[@class='pageliststy next_page']/@href").extract()

7、获取数组的最后一个元素 -1(注:前面加.)

author_id = author_url.split("/")[-1]

8、提取时间格式(注:前面加.)

create_time = tr.xpath(".//td[4]/em/text()").extract()[0]
create_time = datetime.strptime(create_time, "%Y-%m-%d %H:%M")

9、找下一页的url,涉及到递归

last_time_str = tr.xpath(".//td[6]/em/text()").extract()[0]
last_time = datetime.strptime(last_time_str, "%Y-%m-%d %H:%M") // 将字符串转换成时间类型

10、防止报错写法

if tr.xpath(“.//td[1]/span/text()”).extract():
status = tr.xpath(“.//td[1]/span/text()”).extract()[0]
topic_item[“status”] = status

11、区分插入数据还是更新数据

def save(self):
topic = Topic()
topic.title = self[“title”]
topic.content = self[“content”]
topic.id = self[“id”]
topic.author = self[“author”]
topic.create_time = self[“create_time”]
topic.answer_nums = self.get(“answer_nums”, 0)
topic.click_nums = self.get(“click_nums”, 0)
topic.praised_nums = self.get(“praised_nums”, 0)
topic.jtl = self.get(“jtl”, 0)
topic.score = self.get(“score”, 0)
topic.status = self[“status”]
topic.last_answer_time = self[“last_answer_time”]existed_topics = Topic.select().where(Topic.id == topic.id)
if existed_topics:topic.save()
else:topic.save(force_insert=True)

12、记住.//和//是不一样的,为了防止错误,我们全部都要使用.//

13、数字和文本混合在一起,我们应该怎么把数字提取出来呢

jtl_match = re.search("(\d+)%", jtl_str)if jtl_match:jtl = int(jtl_match.group(1))

14、获取div标签,并且是以id的值以post-开头

all_divs = response.xpath("//div[starts-with(@id, 'post-')]")

相关内容

热门资讯

吕文君社媒庆祝夺冠:不只是海港... 2025赛季中超联赛于昨日正式落幕,上海海港队凭借出色的表现,成功捧起了冠军奖杯,成为了中超历史上又...
日本政府顾问:无需等到160关... 日本政府顾问表示,高市早苗政府对日元干预将采取更积极姿态,以抑制日元疲软带来的通胀压力,干预门槛可能...
被摄影师起诉侵权 视觉中国公开... 来源:每日经济新闻 持续两年多的摄影师起诉视觉中国(000681.SZ)侵权一案近日迎来进展。 法...
《哪吒2》被质疑过多使用动捕技... 搜狐娱乐讯 22日,奥斯卡公开的最佳动画长片奖“符合参评资格”大名单中没有《哪吒之魔童闹海》,引发热...
为了少付合同款,湖南一公司诉讼... 华声在线11月23日讯(文/视频 全媒体记者 杨昱 通讯员 胡云淞)为了少支付40万元合同款及利息,...
原创 退... 在机关事业单位养老保险制度从2014年10月1日开始实施之后,标志着我国退休的制度的并轨。之所以会称...
从“纸上政策”到“落地实效” ... 在建湖县高新技术园区,文辰精密科技有限公司的生产车间内机器轰鸣,工人们正忙着赶制新一批订单。这家专注...
跨省办公更便捷!京津冀律师驿站... 11月22日至23日,京津冀律师驿站在北京启动“百千万行动计划”,计划通过建立百家律所联系点,推动千...
梅花生物:因侵害专利权被味之素... 北京商报讯(记者 郭秀娟 王悦彤) 11月23日,北京商报记者获悉,近日梅花生物发布公告称,公司及全...
吉林益豆食品有限公司:依托互市... 珲春地处中、俄、朝三国交界,得天独厚的地理位置,使其成为连接东北亚的“黄金通道”。在这里,吉林益豆食...