Python“Requests”模块无法检测某些HTML链接标记

2024-06-02 20:59:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我相信这是一个简单的问题谁有网页编程和基本的网页抓取经验(我没有)。在

我的目标是通过删除Chegg雇佣的许多导师的“简历”段落来获取他们的信息。虽然我是一个网络抓取的新手,但我想这将涉及到编写一个scaper,它递归地点击导师的链接:

List of Tutors

把导师的简历都翻出来了

使用Microsoft Edge DOM Explorer,我可以在页面的HTML中检测导师的链接标记:

Tutor's HTML link tag

然而,当我使用Python的“Requests”模块获取网页的HTML时,导师的链接不在那里!奇怪的是,网页上的其他链接都被检测到了,但是没有一个导师的链接。Python代码如下所示:

import requests

r = requests.get('www.chegg.com/tutors/online-tutors/')

print r.content

有人能就这个问题给我一些建议吗?我应该学些什么(例如HTML编程、HTTP理论等等),这样我就可以处理这个项目了?在


Tags: 网络信息网页目标链接html编程经验
1条回答
网友
1楼 · 发布于 2024-06-02 20:59:39

每个专家的所有数据都在div中,其中有expert-list-content类:

from bs4 import BeautifulSoup
import requests

soup = BeautifulSoup(requests.get("https://www.chegg.com/tutors/online-tutors/").content)
for ex in soup.select("div.expert-list-content"):
    print(ex.select_one("div.expert-description").text)

这给了你:

^{pr2}$

要获取配置文件链接和名称:

for ex in soup.select("div.expert-list-content"):
  info = ex.select_one("div.expert-info a")
  print(info.text, info["href"])

这给了你:

(u'Aleria S.', '/tutors/online-tutors/Aleria-S-371573/')
(u'Douglas Z.', '/tutors/online-tutors/Douglas-Z-568826/')
(u'Carla S.', '/tutors/online-tutors/Carla-S-864918/')
(u'Vinit R.', '/tutors/online-tutors/Vinit-R-2031766/')
(u'Anastasia G.', '/tutors/online-tutors/Anastasia-G-65278/')
(u'Vinay S.', '/tutors/online-tutors/Vinay-S-85533/')
(u'Gunjan G.', '/tutors/online-tutors/Gunjan-G-2695711/')
(u'Scott M.', '/tutors/online-tutors/Scott-M-277743/')
(u'Saumya U.', '/tutors/online-tutors/Saumya-U-890305/')
(u'Ed M.', '/tutors/online-tutors/Ed-M-2895636/')

这里不涉及Javascript,如果您在浏览器中右键单击并选择viewsource,您可以看到它就在那里。如果它是动态创建的,则在源代码中不会看到它。一般来说,添加用户代理总是好的。在

head = {"User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"}
soup = BeautifulSoup(requests.get("https://www.chegg.com/tutors/online-tutors/", headers=head).content)

相关问题 更多 >