Py学习  »  Python

在这里,我不知道如何使用python beautifulsoup废弃这个javascript站点[关闭]

Nitesh Rao • 5 年前 • 1485 次点击  

我不是如何把每个组放在“选择组ID”中,通过单击“(单击查看)”按钮来抓取每个公司的详细信息。因为联系没有改变,因为我们改变了集团或公司。

我是新来的javascript网站,我不知道如何废弃这种东西,请帮助我。

代码:

import bs4

import requests

r = requests.get('http://www.mpcci.com/members_list.php')

soup = BeautifulSoup(r.text,'lxml')

select = soup.find('select',{"id":"select_gp_id"})
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/44353
 
1485 次点击  
文章 [ 3 ]  |  最新文章 5 年前
Auss
Reply   •   1 楼
Auss    6 年前

你要做的是尝试在浏览器中打开你的开发模式。有一个部分显示单击按钮时完成了哪些get请求。例如,这可能会引出一个ajax查询。复制通过单击按钮触发的url,并通过播放该url来确定其语义。例如: http://someurl.com/stuff/ajax/pagenum=1&search=&date=01/01/2019/ 当你有了这个请求,并且你弄清楚了它的逻辑,你可以很容易地擦掉。在这里,我将在pagenum=之后增加访问所有站点的数量。祝你好运。

chitown88
Reply   •   2 楼
chitown88    6 年前

这将打开浏览器,然后单击下拉菜单。您可以单击所需的选项继续:

from selenium import webdriver 

driver = webdriver.Chrome()
url = 'http://www.mpcci.com/members_list.php'
driver.get(url) 

driver.find_element_by_xpath('//*[@id="select_gp_id"]').click()
Keyur Potdar
Reply   •   3 楼
Keyur Potdar    6 年前

首先,您需要获取下拉菜单中列出的所有公司的所有选项值。例如,来自 <option value="MQ==">Banking, Insurance, Moneylending Trading (Group 1)</option> ,你需要 MQ== . 使用这些值,您可以使用以下代码直接访问ajax请求:

import requests
from bs4 import BeautifulSoup

r = requests.get('http://www.mpcci.com/members_list.php')
soup = BeautifulSoup(r.text, 'lxml')

companies = [option['value'] for option in soup.select('#select_gp_id option')[1:]]
for company in companies:
    r = requests.post('http://www.mpcci.com/get_members.php', data={'select': company})
    soup = BeautifulSoup(r.text, 'lxml')
    # scrape each company's information

请求url、表单数据和请求方法都可以在开发人员工具的网络部分找到。