【问题标题】:Scraping - Drop menu to select the number of items to show抓取 - 下拉菜单选择要显示的项目数
【发布时间】:2017-11-17 17:35:46
【问题描述】:

我正在尝试抓取具有下拉菜单的网站,用户可以在其中选择显示的项目数。

即使我选择查看所有结果的选项,当我使用 bs4 解析页面的 URL 时,我也只会获得默认页面上显示的元素的结果。

这是网址:http://www.archivioelettorale.it/joomla/index.php?option=com_content&view=category&id=36:elezioni-comunali&Itemid=58

这是我的(仍然是初级的)代码:

headers = {'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36'}
site = "http://www.archivioelettorale.it/joomla/index.php?option=com_content&view=category&id=36:elezioni-comunali"
soup = BeautifulSoup(requests.get(site,headers=headers,timeout=5).text, 'html.parser')

list_1 = []
list_2 = []
elections_anchors = soup.find_all(class_=re.compile('sectiontableentry'))
for extract in elections_anchors:
    list_1.extend(extract.select('a'))

for element in list_1:
list_2.append('http://www.archivioelettorale.it' + element['href']) 

下拉菜单中的内容是:“Mostra #” 非常感谢

【问题讨论】:

    标签: python-3.x drop-down-menu web-scraping


    【解决方案1】:

    点击下拉菜单检查网络流量即可获取表单数据。然后使用 POST 请求提交表单数据。

    data = {
        'filter':'', 'limit':0, 'id':36, 'sectionid':5, 
        'task':'category', 'filter_order':'', 'filter_order_Dir':'', 
        'limitstart':0, 'viewcache':0
        }
    headers = {
        'user-agent': 
        'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36'
        }
    site = "http://www.archivioelettorale.it/joomla/index.php?option=com_content&view=category&id=36:elezioni-comunali"
    r = requests.post(site, data=data, headers=headers, timeout=20)
    soup = BeautifulSoup(r.text, 'html.parser')
    

    页面需要一些时间来加载,所以我增加了超时。您现在应该有 4888 个结果。

    【讨论】:

      猜你喜欢
      • 2021-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-06
      • 2014-09-28
      • 2018-02-16
      相关资源
      最近更新 更多