我对Python很新,我正在构建一个小应用程序来废弃一个特定单词的西班牙语论坛,这样我就可以尝试获取有关Nintendo Switch股票的信息(很难得到)以及培训/娱乐。我打算每隔15分钟检查一次,然后将更新发送到Telegram Bot,但是现在我很难从整个线程中获得结果。
以下是一个示例:
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
论坛的每个新页面都会在网址末尾添加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...
不确定我在这里缺少什么,我已经设法废弃了一个页面,但是这个循环阻止了我!
答案 0 :(得分:0)
我想尝试在系列的其中一个页面中查找我知道的字符串:' 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. ']
答案 1 :(得分:0)
我不确定您的预期输出是什么,但请尝试一下:
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)