如何使用Python从包含“显示更多”的网页中提取所有URL?

一世

我在网络抓取领域是一个新手,我以前使用代码从包含多个页面的网站中提取网址,然后将其保存在txt文件中。我想将其应用于新网站,但该网站只有一个页面,但带有“显示更多”按钮。

这是网页:http : //sdg.iisd.org/news/

这是我的代码:

import requests
from bs4 import BeautifulSoup
import time
import pandas as pd 



links = []

for i in range(#221):
    url = 'http://sdg.iisd.org/news/'  #+ str(i) <-- for webpage with many pages

    response = requests.get(url, headers={'User-agent': 'Mozilla/5.0'})

    if response.ok:
        print('Page: ' + str(i))
        soup = BeautifulSoup(response.text,'lxml')
        div = soup.findAll('article')
        for article in div:
            a = article.find('a')
            link = a['href']
            links.append('https://sdg.iisd.org/news' + link)

        print(len(links))

with open('urls.txt', 'w') as file:
    for link in links:
        file.write(link + '\n')

有人建议使用Selenium,但我找不到我拥有的类似应用程序的示例。您是否知道我可以使用什么和更改代码来获取页面的所有链接?

保罗·M

如果您记录了浏览器的网络流量,则可以看到按下该Show more按钮可以http://sdg.iisd.org/wp-admin/admin-ajax.php通过HTTP POST发出XHR请求,并且响应为HTML。您也可以从浏览器的开发工具中复制POST有效负载。有效负载字典中使用pageNumberppp键值对data来获得不同的文章:

def main():
    import requests
    from bs4 import BeautifulSoup as Soup
    from operator import itemgetter

    url = "http://sdg.iisd.org/wp-admin/admin-ajax.php"

    data = {
        "template": "load_more",
        "post_type": "news",
        "sdgs": "",
        "issues": "",
        "globalpartnership": "",
        "actors": "",
        "actions": "",
        "regions": "",
        "behaviour": "exact",
        "sort_by": "DESC",
        "pageNumber": "1",
        "ppp": "12",
        "action": "more_post_ajax",
        "author": ""
    }

    response = requests.post(url, data=data)
    response.raise_for_status()

    soup = Soup(response.content, "html.parser")

    article_urls = list(map(itemgetter("href"), soup.select("article > a")))
    print(article_urls)
    
    return 0


if __name__ == "__main__":
    import sys
    sys.exit(main())

输出:

['http://sdg.iisd.org/news/wef-event-explores-ways-to-fix-international-trade-system/', 'http://sdg.iisd.org/news/wto-members-resume-negotiations-on-fisheries-subsidies/', 'http://sdg.iisd.org/news/informal-ministerial-highlights-role-of-trade-in-promoting-covid-19-recovery/', 'http://sdg.iisd.org/news/wto-imf-project-uneven-covid-19-recovery-across-and-within-countries/', 'http://sdg.iisd.org/news/53-wto-members-commit-to-ease-restrictions-on-humanitarian-food-aid/', 'http://sdg.iisd.org/news/development-goals-can-work-even-amid-crisis-but-we-need-to-measure-better/', 'http://sdg.iisd.org/news/unctad-partners-launch-tool-to-identify-exchange-traded-funds-with-sdg-alignment/', 'http://sdg.iisd.org/news/tool-helps-measure-quality-of-stakeholder-engagement-in-sdgs/', 'http://sdg.iisd.org/news/unctad-reveals-economic-slowdown-before-covid-19-provides-key-data-on-rcep-agreement/', 'http://sdg.iisd.org/news/unep-report-identifies-top-actions-to-minimize-adverse-impacts-of-pesticides-fertilizers/', 'http://sdg.iisd.org/news/regions-to-hold-sustainable-development-forums-ahead-of-2021-hlpf/', 'http://sdg.iisd.org/news/ndc-partnership-reflects-on-milestone-year-for-climate-ambition/']
>>> 

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何正确编写从网页中提取所有链接的程序?

来自分类Dev

Python x Tweepy:如何从列表中包含的所有用户中提取推文

来自分类Dev

如何通过Python使用Selenium从网页中提取文本$ 7.56

来自分类Dev

如何获取网页中所有包含/使用的文件的URL列表?

来自分类Dev

如何使用javascript从html字符串中提取所有图像url和href值?

来自分类Dev

使用Python从多个网页中提取日期

来自分类Dev

使用python scrapy从网页中提取链接

来自分类Dev

从网页[R]中提取所有(可能的)可选日期值

来自分类Dev

如何使用python从文本文件中提取所有-1和1

来自分类Dev

如何使用OpenSSL从证书中提取所有OID

来自分类Dev

使用python从xml数据中提取所有文本

来自分类Dev

使用BS4从网页中提取多个没有'a'或'href'标签的URL

来自分类Dev

Python 网页抓取未使用 BeautifulSoup 显示所有行

来自分类Dev

从URL文件夹中提取所有图像并在Boostrap HTML中显示

来自分类Dev

如何从网站上包含特定字符串的所有paragrahs中提取文本

来自分类Dev

如何从网页中提取数据?

来自分类Dev

如何从网页中提取表格

来自分类Dev

如何从网页中提取网址

来自分类Dev

使用DOMdocument从表中提取所有<a>

来自分类Dev

如何使用python从URL中提取元描述?

来自分类Dev

如何使用python从URL中提取元描述?

来自分类Dev

如何使用 Python 从 url 中提取一些数据

来自分类Dev

如何使用XPath显示所有子节点,更多子节点以及更多子节点

来自分类Dev

如何从具有特殊类名的网页中提取元素?

来自分类Dev

如何在python 3中使用Selenium phantomJS从网页的html源中提取表格元素?

来自分类Dev

如何以纯文本格式提取网页上的所有URL(链接)?

来自分类Dev

如何使用rvest从网页中提取选择性数据?

来自分类Dev

使用Python从不断更新的网页中提取内容

来自分类Dev

使用 Python 抓取网页时从链接中提取 href

Related 相关文章

  1. 1

    如何正确编写从网页中提取所有链接的程序?

  2. 2

    Python x Tweepy:如何从列表中包含的所有用户中提取推文

  3. 3

    如何通过Python使用Selenium从网页中提取文本$ 7.56

  4. 4

    如何获取网页中所有包含/使用的文件的URL列表?

  5. 5

    如何使用javascript从html字符串中提取所有图像url和href值?

  6. 6

    使用Python从多个网页中提取日期

  7. 7

    使用python scrapy从网页中提取链接

  8. 8

    从网页[R]中提取所有(可能的)可选日期值

  9. 9

    如何使用python从文本文件中提取所有-1和1

  10. 10

    如何使用OpenSSL从证书中提取所有OID

  11. 11

    使用python从xml数据中提取所有文本

  12. 12

    使用BS4从网页中提取多个没有'a'或'href'标签的URL

  13. 13

    Python 网页抓取未使用 BeautifulSoup 显示所有行

  14. 14

    从URL文件夹中提取所有图像并在Boostrap HTML中显示

  15. 15

    如何从网站上包含特定字符串的所有paragrahs中提取文本

  16. 16

    如何从网页中提取数据?

  17. 17

    如何从网页中提取表格

  18. 18

    如何从网页中提取网址

  19. 19

    使用DOMdocument从表中提取所有<a>

  20. 20

    如何使用python从URL中提取元描述?

  21. 21

    如何使用python从URL中提取元描述?

  22. 22

    如何使用 Python 从 url 中提取一些数据

  23. 23

    如何使用XPath显示所有子节点,更多子节点以及更多子节点

  24. 24

    如何从具有特殊类名的网页中提取元素?

  25. 25

    如何在python 3中使用Selenium phantomJS从网页的html源中提取表格元素?

  26. 26

    如何以纯文本格式提取网页上的所有URL(链接)?

  27. 27

    如何使用rvest从网页中提取选择性数据?

  28. 28

    使用Python从不断更新的网页中提取内容

  29. 29

    使用 Python 抓取网页时从链接中提取 href

热门标签

归档