使用特定单词wtih BeautifulSoup的动态url抓取论坛时出现Python错误

2024-06-14 17:47:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Python还比较陌生,我正在开发一个小应用程序,在西班牙语论坛上搜索一个特定的单词,这样我就可以尝试获取关于任天堂Switch股票(很难获得)以及培训/娱乐的新闻。我打算每隔15分钟左右检查一次,然后向电报机器人发送更新,但目前我正努力从整个线程中获得结果

以下是一个示例:

import requests

#TODO: Have the get method loop through every iteration of a forum page: s10, s20, s30...

from bs4 import BeautifulSoup

url = "https://www.elotrolado.net/hilo_disponibilidad-nintendo-switch-seguimiento-de-pedidos_2210603_s"

for i in range(10,10000,10):
    stringer = str(i)
    page = requests.get(url%(stringer,)).read()
    soup = BeautifulSoup(page.content, "lxml")
    results = soup.find_all(lambda tag: "stock" in tag.string if tag.string else False)
    scraped_paragraphs = map(lambda element: element.string, results)
    print(scraped_paragraphs)

当我运行这个时,我得到TypeError: not all arguments converted during string formatting

论坛的每个新页面都会在URL末尾添加10个,如下所示:

First page: https://www.elotrolado.net/hilo_disponibilidad-nintendo-switch-seguimiento-de-pedidos_2210603

Second page: https://www.elotrolado.net/hilo_disponibilidad-nintendo-switch-seguimiento-de-pedidos_2210603_s10

Third page: https://www.elotrolado.net/hilo_disponibilidad-nintendo-switch-seguimiento-de-pedidos_2210603_s20

etc...

不确定我在这里遗漏了什么,我已经设法刮去了一页,但这个循环正在抵制我


Tags: httpsstringnettagwwwpagede论坛
2条回答

我想尝试寻找一个字符串,我知道它存在于系列的一个页面中:“amazon”。我在代码中看到了两个可能的小缺陷

其一是,它无法识别案例中的变化(如“亚马逊”、“亚马逊”等)。另一个是map产生一个迭代器

>>> import requests
>>> page = requests.get('https://www.elotrolado.net/hilo_disponibilidad-nintendo-switch-seguimiento-de-pedidos_2210603_s20').content
>>> import bs4
>>> soup = bs4.BeautifulSoup(page, 'lxml')
>>> results = soup.find_all(lambda tag: 'amazon' in tag.string.lower() if tag.string else False)
>>> len(results)
3
>>> list(map(lambda elem: elem.string, results))
[' A las 10:30 abre la preventa Amazon España!!! ', ' Me llego email de Amazon, la ponen a las 10:30am ', ' El enlace de amazon de la neón lo tenéis? gracias. ']

我不确定您的预期输出是什么,但请尝试以下方法:

for i in range(10, 10000, 10): stringer = int(i) page = requests.get(url + '%d' % stringer) print(page) soup = BeautifulSoup(page.content, "lxml") results = soup.find_all(lambda tag: "stock" in tag.string if tag.string else False) scraped_paragraphs = list(map(lambda element: element.string, results)) print(scraped_paragraphs)

相关问题 更多 >