Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python BeautifulSoup中抓取网站中的每个页面_Python_Python 3.x_Beautifulsoup - Fatal编程技术网

如何在Python BeautifulSoup中抓取网站中的每个页面

如何在Python BeautifulSoup中抓取网站中的每个页面,python,python-3.x,beautifulsoup,Python,Python 3.x,Beautifulsoup,有没有办法抓取URL中的每个页面 比如在URL中查找每个文章页面 以下是我到目前为止的情况。问题是新闻文章模式很奇怪,例如https://gogo.mn/r/qqm4m 所以像下面这样的代码永远找不到文章 base_url = 'https://gogo.mn/' for i in range(number_pages): url = base_url+str(i) req = requests.get(url) soup = BeautifulSoup(req.cont

有没有办法抓取URL中的每个页面

比如在URL中查找每个文章页面

以下是我到目前为止的情况。问题是新闻文章模式很奇怪,例如
https://gogo.mn/r/qqm4m

所以像下面这样的代码永远找不到文章

base_url = 'https://gogo.mn/'
for i in range(number_pages):
    url = base_url+str(i)
    req = requests.get(url)
    soup = BeautifulSoup(req.content)

如何抓取此类网站?

我没有使用Scrapy。但要仅使用
request
BeautifulSoup
获取所有内容,您需要找到网站的索引页(有时是存档或搜索结果),保存所有页面的URL,循环浏览URL,并保存页面内容。

最简单的方法是首先从网站获取页面。这可以通过以下方式实现:

url='1〕https://gogo.mn/'
response=requests.get(url)
然后,页面包含在响应变量中,您可以通过查看response.text来检查该变量

现在使用BeautifulSoup查找页面上包含的所有链接:

a\u links=html.find\u all('a'))
这将返回一个bs4.element.ResultSet类型,该类型可以使用for循环进行迭代。查看您的特定站点,我发现它们的许多链接中都不包含baseURL,因此必须对URL进行一些规范化

对于a_链接中的链接:
如果链接['href']中的('https')或链接['href']中的('http'):
打印(链接['href'])
其他:
xLink=link['href'][1:]
打印(f'{url}{xLink}')
一旦你做到了这一点,你就拥有了给定页面的所有链接。然后,您需要消除重复项,并为每个页面运行新页面上的链接。这将涉及递归地遍历您找到的所有链接


BeautifulSoup是一个HTML解析器,而不是爬虫程序。也许你想要刮痧?