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-')]")

相关内容

热门资讯

菲媒:菲律宾副总统称,不优先考... 【环球网报道】综合菲律宾《马尼拉标准报》等媒体6月1日报道,菲律宾副总统莎拉·杜特尔特称,她不优先考...
原创 美... 特朗普再次执掌白宫后,他的“地盘扩张梦”可谓是雷声大雨点小,搞得沸沸扬扬却未见实效。他本想一口气吞掉...
法网-郑钦文鏖战2-1萨姆索诺... 北京时间6月1日,2025赛季网球大满贯法国公开赛继续进行,在女单第三轮的一场比赛中,赛会8号种子、...
以国防军:黎以停火以来超180... △黎巴嫩南部地区(资料图) 以色列国防军当地时间6月1日下午发布消息称,当天上午,一名黎巴嫩真主党特...
深夜,巨子生物突发声明:接受检... 每经编辑|金冥羽 巨子生物旗下重组胶原蛋白品牌可复美产品成分争议持续发酵。 6月1日22点32分,...
新修订的《快递暂行条例》6月1... 6月1日起,《国务院关于修改〈快递暂行条例〉的决定》正式施行。此次修改,专门增加了“快递包装”章节,...
开放“以债换房”政策,可直接置... “南京网络辟谣”微信公众号6月1日发文称,近日,有“南京二手房零首付李经理”“合肥瑶珺房地产代理有限...
GCN的几种模型复现笔记 引言 本篇笔记紧接上文,主要是上一篇看写了快2w字,再去接入代码感觉有点...
基于TDesign风格的Bla... 作为一名Web开发人员,开发前端少不了使用JavaScript,而Bla...