我不是如何通过单击“(单击以查看)”按钮将每个组放入“选择组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"})
答案 0 :(得分:1)
首先,您需要获取下拉菜单中列出的所有公司的所有选项值。例如,您需要从<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
请求网址,表单数据和请求方法都可以在开发人员工具的“网络”部分找到。
答案 1 :(得分:0)
这将打开浏览器,然后单击下拉菜单。您可以通过单击所需的选项来继续操作:
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()
答案 2 :(得分:0)
您要做的是尝试在浏览器中打开开发人员模式。有一部分显示单击按钮时完成的GET请求。例如,这可能会引发Ajax查询。复制通过单击按钮触发的URL,并通过播放来确定其语义。例如:http://someurl.com/stuff/ajax/pagenum=1&search=&date=01/01/2019/ 有了此请求并弄清楚了它的逻辑后,就可以轻松抓取。在这里,我将在pagenum =之后增加数字以访问所有站点。祝好运。