我是Web抓取的新手,正在从事我的小项目。
任务是获取function add(a,b) {
return a>b;
}
,它们的"cameras"
和"prices"
的名称
(来自:https://www.dpreview.com/products/cameras/all?page=1)。
当我在相机上单击以将我路由到新URL时,我得到的最后一个提及。
当我检查页面时,我必须从那里获取URL,但是只需:
"quick specs"
我将获得所有链接(所以还有一些其他信息,例如登录名,社交媒体等)
我想做的只是从特定班级得到的。
您能帮我吗? (或者至少让我指向讨论此内容的教程?)。
我正在使用for link in soup.find_all("a"):
print(link.get("href"))
答案 0 :(得分:1)
您可以通过以下方式找到必要的信息:首先将搜索锚定到td
的{{1}}产品清单中:
class="product"
输出:
import requests, typing
class Camera(typing.NamedTuple):
info:typing.List[str]
quicklook:str
price:str
from bs4 import BeautifulSoup as soup
d = soup(requests.get('https://www.dpreview.com/products/cameras/all?page=1').text, 'html.parser')
headers = [['div', 'name'], ['div', 'specs'], ['div', 'prices']]
vals = [[(lambda x:getattr(x, 'text', 'N/A') if b != 'name' else [getattr(x, 'text', 'N/A'), i.a['href']])(i.find(a, {'class':b})) for a, b in headers] for i in d.find_all('td', {'class':'product'})]
final_result = [Camera(*i) for i in vals]