鱼C论坛

 找回密码
 立即注册
查看: 2076|回复: 4

[已解决]爬虫

[复制链接]
发表于 2021-10-30 16:51:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
有没有老哥知道下面的代码出了啥问题,返回的是一个空列表

import requests
import bs4

url = 'https://www.ewi-psy.fu-berlin.de/en/mitarbeiterliste/index.html?show=profs'

headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36'}

response = requests.get(url, headers=headers)

soup = bs4.BeautifulSoup(response.text, 'html.parser')

url_targets = soup.find_all('div', class_=('box-staff-list-table-name', 'col-s-12', 'col-l-4'))
最佳答案
2021-10-31 23:29:08
真正的数据在ajax response里。
  1. import requests
  2. from bs4 import BeautifulSoup


  3. def main():
  4.     # 基础信息
  5.     basic_url = 'https://www.ewi-psy.fu-berlin.de'
  6.     url = 'https://www.ewi-psy.fu-berlin.de/en/mitarbeiterliste/index.html?show=profs'
  7.     headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'}
  8.     ajax_headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)',
  9.                     'X-Requested-With': 'XMLHttpRequest',
  10.                     'Referer': 'https://www.ewi-psy.fu-berlin.de/en/mitarbeiterliste/index.html?show=profs'}

  11.     # 获取ajax url
  12.     r = requests.get(url, headers=headers)
  13.     soup = BeautifulSoup(r.text, 'html.parser')
  14.     ajax_url = soup.find_all('div', class_="cms-box-ajax-content")[1]['data-ajax-url']

  15.     # 合成正式 url
  16.     url = f'{basic_url}{ajax_url}'
  17.    
  18.     # 查找div
  19.     r = requests.get(url, headers=ajax_headers)
  20.     soup = BeautifulSoup(r.text, 'html.parser')
  21.     url_targets = soup.find_all('div', class_=('box-staff-list-table-name', 'col-s-12', 'col-l-4'))
  22.     print(url_targets)


  23. if __name__ == "__main__":
  24.     main()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-10-31 23:29:08 | 显示全部楼层    本楼为最佳答案   
真正的数据在ajax response里。
  1. import requests
  2. from bs4 import BeautifulSoup


  3. def main():
  4.     # 基础信息
  5.     basic_url = 'https://www.ewi-psy.fu-berlin.de'
  6.     url = 'https://www.ewi-psy.fu-berlin.de/en/mitarbeiterliste/index.html?show=profs'
  7.     headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'}
  8.     ajax_headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)',
  9.                     'X-Requested-With': 'XMLHttpRequest',
  10.                     'Referer': 'https://www.ewi-psy.fu-berlin.de/en/mitarbeiterliste/index.html?show=profs'}

  11.     # 获取ajax url
  12.     r = requests.get(url, headers=headers)
  13.     soup = BeautifulSoup(r.text, 'html.parser')
  14.     ajax_url = soup.find_all('div', class_="cms-box-ajax-content")[1]['data-ajax-url']

  15.     # 合成正式 url
  16.     url = f'{basic_url}{ajax_url}'
  17.    
  18.     # 查找div
  19.     r = requests.get(url, headers=ajax_headers)
  20.     soup = BeautifulSoup(r.text, 'html.parser')
  21.     url_targets = soup.find_all('div', class_=('box-staff-list-table-name', 'col-s-12', 'col-l-4'))
  22.     print(url_targets)


  23. if __name__ == "__main__":
  24.     main()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-11-1 21:40:05 | 显示全部楼层
suchocolate 发表于 2021-10-31 23:29
真正的数据在ajax response里。

竟然还可以这样,但是我想找的内容只有div class="box-staff-list-table-name col-s-12 col-l-4",这里爬出来的内容还包括div class="box-staff-list-table-phone col-s-12 col-l-2"、div class="box-staff-list-table-link col-s-12 col-l-3这些不相关的内容,请问这是怎么回事呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-1 22:06:29 | 显示全部楼层
kygschp 发表于 2021-11-1 21:40
竟然还可以这样,但是我想找的内容只有div class="box-staff-list-table-name col-s-12 col-l-4",这里爬 ...

那你改成这个试试
  1. url_targets = soup.find_all('div', class_="box-staff-list-table-name")
复制代码

我只是参考你的语法,并不清楚你想爬的具体内容。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-11-2 14:59:17 | 显示全部楼层
suchocolate 发表于 2021-11-1 22:06
那你改成这个试试
我只是参考你的语法,并不清楚你想爬的具体内容。

可以了,感谢大佬,太强了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-16 10:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表