Python 爬虫教程 07

loskyertt Unknown

1.示例

示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import requests
from lxml import etree

# 注意这条链建
url = "https://www.spiderbuf.cn/playground/s06"

headers = {
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36",
}

html = requests.get(url=url, headers=headers).text

f = open('./课程/06course/06.html', 'w', encoding='utf-8')
f.write(html)
f.close()

print(html)

root = etree.HTML(html)
trs = root.xpath('//tr')

f = open('./课程/06course/data06.txt', 'w', encoding='utf-8')
for tr in trs:
tds = tr.xpath('./td')
s = ''
for td in tds:
s = s + str(td.xpath('string(.)')) + '|'
print(s)
if s!= '':
f.write(s + '\n')

运行这段代码,会发现是解析不出我们想要的内容的。虽然url、解析逻辑看起来填写的都是正确的,那么问题是出在哪儿呢?其实就是出在url,这个url只是看起来正确,但并不是真正的url(我们想要的,包含内容的)。

2.分析页面

这时候我们来分析下网页源代码,发现在目标页面代开源码是没有我们想要的内容的,如下图所示:

网页源码.png
网页源码.png

那么这时候我们就得找到 真实链接

F12打开浏览器控制台,选择network

控制台.png
控制台.png

先看左边(红色框)部分,选中一个,看一下它的preview,如图所示:

preview.png
preview.png

可以发现没有我们想要的大内容,说明原始的url不对,我们得通过这种方式查找出包含内容的url。可以把后缀是.js.css的排除掉,这些都是指网页样式。

如下图所示:

pAUbQxO.png
pAUbQxO.png

这个inner才是我们想要的,再看它的headers,我们就能找到它的正确的url = https://www.spiderbuf.cn/playground/inner

把这个url替换掉原始url就行了:

1
2
3
4
5
6
7
8
9
url = "https://www.spiderbuf.cn/playground/inner"

headers = {
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36",
}

html = requests.get(url=url, headers=headers).text

'''剩余部分的代码不变......'''

3.总结

如图所示:

控制台.png
控制台.png

可以发现在html下还有一个html,称作iframe。就是网页里面嵌套了一个浏览器再打开另一个网页,只有在控制台看它后台的一个请求,才能找出真实的url

  • Title: Python 爬虫教程 07
  • Author: loskyertt
  • Created at : 2024-10-19 09:28:18
  • Updated at : 2024-11-13 03:07:38
  • Link: https://redefine.ohevan.com/2024/10/19/07Python爬虫/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments
On this page
Python 爬虫教程 07