使用动态网址在论坛上使用BeautifulSoup删除特定单词时出现Python错误

时间:2017-06-19 21:11:42

标签: python web-scraping beautifulsoup

我对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...

不确定我在这里缺少什么,我已经设法废弃了一个页面,但是这个循环阻止了我!

2 个答案:

答案 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)