使用 "show more " 抓取数据
using "show more " to scrape data
我一直在尝试使用 python 从网页中抓取数据,到目前为止一切顺利。但问题是页面不会立即加载所有内容,有一个“显示更多”按钮。所以我的脚本只抓取前 10 个项目。
我已经查看了该站点,但我无法用 url 做任何事情。我想我必须 post 一些东西到服务器才能取回下一个项目,但我不知道要 post 什么以及如何取回。这是我的代码:
res = requests.get('https://candidat.pole-emploi.fr/offres/recherche?motsCles=serveur&offresPartenaires=true&rayon=20&tri=0')
page_soup = bs4.BeautifulSoup(res.text,"html.parser")
containers = page_soup.findAll("div",{"class":"media-body"})
url = []
for container in containers:
url.append('https://candidat.pole-emploi.fr' +container.h2.a["href"])
for i in url:
print(i)
email_list = []
for adress in url:
print( ' testing ', adress)
found = False
detail = requests.get(adress)
apply = bs4.BeautifulSoup(detail.text,"html.parser")
apply_mail = apply.findAll("div",{"class":"apply-block"})
if apply_mail == []:
email_list.append('not found')
continue
email_raw = apply_mail[0].text
for i in email_raw.splitlines():
if '@' in i:
email_list.append(i)
found = True
if not found:
email_list.append('not found')
for i in email_list:
print(i)
您可以使用 Beuatifulsoup
或其他 http
请求库废弃的唯一数据是在启动时可用而无需 Javascirpt
操作。和做curl $URL
、解析数据一样
解决此问题的一种方法是使用 selenium
webdriver 和
编写与用户在浏览器上执行的操作相同的程序。
可以找到更多信息
我一直在尝试使用 python 从网页中抓取数据,到目前为止一切顺利。但问题是页面不会立即加载所有内容,有一个“显示更多”按钮。所以我的脚本只抓取前 10 个项目。 我已经查看了该站点,但我无法用 url 做任何事情。我想我必须 post 一些东西到服务器才能取回下一个项目,但我不知道要 post 什么以及如何取回。这是我的代码:
res = requests.get('https://candidat.pole-emploi.fr/offres/recherche?motsCles=serveur&offresPartenaires=true&rayon=20&tri=0')
page_soup = bs4.BeautifulSoup(res.text,"html.parser")
containers = page_soup.findAll("div",{"class":"media-body"})
url = []
for container in containers:
url.append('https://candidat.pole-emploi.fr' +container.h2.a["href"])
for i in url:
print(i)
email_list = []
for adress in url:
print( ' testing ', adress)
found = False
detail = requests.get(adress)
apply = bs4.BeautifulSoup(detail.text,"html.parser")
apply_mail = apply.findAll("div",{"class":"apply-block"})
if apply_mail == []:
email_list.append('not found')
continue
email_raw = apply_mail[0].text
for i in email_raw.splitlines():
if '@' in i:
email_list.append(i)
found = True
if not found:
email_list.append('not found')
for i in email_list:
print(i)
您可以使用 Beuatifulsoup
或其他 http
请求库废弃的唯一数据是在启动时可用而无需 Javascirpt
操作。和做curl $URL
、解析数据一样
解决此问题的一种方法是使用 selenium
webdriver 和
编写与用户在浏览器上执行的操作相同的程序。
可以找到更多信息