一个超简单的爬虫入门案例(欢迎指正)

xpath
url=‘https://nba.hupu.com/stats/players’
贴一下代码

import requests
from lxml import etree
url = 'https://nba.hupu.com/stats/players'
headers ={'User-agent': ''}
rep=requests.get(url,headers = headers)
tree = etree.HTML(rep.text)
d = tree.xpath('//table[@class="players_table"]//tr[position()>1]/td[1]/text()')
a = tree.xpath('//table[@class="players_table"]//tr/td[2]/a/text()')
b = tree.xpath('//table[@class="players_table"]//tr/td[3]/a/text()')
c = tree.xpath('//table[@class="players_table"]//tr[position()>1]/td[4]/text()')

for(dd,aa,bb,cc) in zip(d,a,b,c):
    print(dd,aa,bb,cc)

先声明etree,传headers,重点是xpath应用
我是看着视频做的,视频链接在这里
贴一下xpath基本用法
说一下如何复制表格,首先是要用markdown写文章把,然后嘞,用开发者工具打开光标找到要复制的表格元素全部贴过来就可以了吧~~~~~~~~~~~哈哈哈哈哈

表达式描述
nodename选取此节点的所有子节点
/从当前节点选取直接子节点
//从当前节点选取子孙节点
.选取当前节点
. .选取当前节点的父节点
@选取属性

运算符

描述

实例

返回值

|

计算两个节点集

//book | //cd

返回所有拥有 book 和 cd 元素的节点集

+

加法

6 + 4

10

-

减法

6 - 4

2

*

乘法

6 * 4

24

div

除法

8 div 4

2

=

等于

price=9.80

如果 price 是 9.80,则返回 true。

如果 price 是 9.90,则返回 false。

!=

不等于

price!=9.80

如果 price 是 9.90,则返回 true。

如果 price 是 9.80,则返回 false。

<

小于

price<9.80

如果 price 是 9.00,则返回 true。

如果 price 是 9.90,则返回 false。

<=

小于或等于

price<=9.80

如果 price 是 9.00,则返回 true。

如果 price 是 9.90,则返回 false。

>

大于

price>9.80

如果 price 是 9.90,则返回 true。

如果 price 是 9.80,则返回 false。

>=

大于或等于

price>=9.80

如果 price 是 9.90,则返回 true。

如果 price 是 9.70,则返回 false。

or

price=9.80 or price=9.70

如果 price 是 9.80,

或者 price 是 9.70,则返回 true。

and

price>9.00 and price<9.90

如果 price 大于 9.00,

并且 price 小于9.90,则返回 true。

mod

计算除法的余数

5 mod 2

1

视频里xpath用错了,因为在td[1]和td[4]对应的数据中,我们的数据没有加a这个层级,导致第一行不需要爬取的‘排名’和’得分‘被爬取到了,所以我们要找到办法把第一行数据不匹配的问题给解决,而解决这个问题我有几个思路,首先通过

preceding following来拿到此标签后面的同级内容

在爬取的第三行第二行的内容中加上球员名称等内容,达到对应的目的

通过指定文本的形式删除

问gpt,new bing
早知道直接问了md,因为是小白半天解决不了,处处碰壁,感谢有你 new bing
在这里插入图片描述
试着让他运行发现数据似乎是前几年的,这里我认为position()>1不用写在第二个第三个上,转念一想,似乎tr确实都是一样的格式,不过第二个第三个用a层级抓取,所以得到的结果没有区别,
在这里插入图片描述
gpt3.5智商堪忧
我宣布newbing yyds
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值