首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >网络-使用python和bs4在不同的url上刮关键字。

网络-使用python和bs4在不同的url上刮关键字。
EN

Stack Overflow用户
提问于 2018-03-12 01:30:34
回答 1查看 69关注 0票数 0

我目前正在编写一个从此页获取信息的脚本。

我想提取我成功完成的每一项的alt

代码语言:javascript
复制
image = soup.find_all('img')
for i in image:
    print(i['alt'])' 

我也希望能够找到这些项目的名称,并将其.append到代码中(这样我就可以知道哪些代码属于哪个“Item”)。

但是我无法在商店页面的html中找到带有"all“(这是我目前正在用urllib2 read()下载的内容)的商品的名称,您只能在类别中找到Item的名称,或者当您单击项目和大小选择并添加到购物车按钮时。

我想打印‘项目’代码,以及项目的名称和颜色(全部在一起)。我正在考虑为每个类别创建所有不同的urls,并以这种方式查找所有信息,但这需要我一段时间。

我想知道是否有人能帮助我,并为我提供一个快速和简单的脚本,我可以用它来执行这些任务。

我使用的是python 2.7bs4urllib2

我也尝试过这个脚本,有人能告诉我为什么它不起作用吗?我一直试图修复它好几个小时。

代码语言:javascript
复制
from bs4 import BeautifulSoup as bs
import urllib2

URL1 = ('http://www.supremenewyork.com/shop/all/jackets')
sauce1 = urllib2.urlopen(URL1).read()
soup1 = bs(sauce1,'lxml')

for name1 in soup1.find_all(attrs={'class':'name-link'}):
    image1 = soup1.find_all('img')
    for i in image1:
        code1 = (i['alt'])+ '  '+(name1.text)
    print(code1)

(不知道为什么缩进在这里不正确,但是脚本完美地执行了name1.text,但是i['alt']总是打印它能找到的最后一个单词,所以它最终会像这样

代码语言:javascript
复制
Bxvxpc8 dng  

Supreme®/Nike®/NBA Teams Warm-Up Jacket
Bxvxpc8 dng  Denim
Bxvxpc8 dng  Supreme®/Nike®/NBA Teams Warm-Up Jacket
Bxvxpc8 dng  White
Bxvxpc8 dng  Supreme®/Nike®/NBA Teams Warm-Up Jacket
Bxvxpc8 dng  Black
Bxvxpc8 dng  


Washed Work Trench Coat
Bxvxpc8 dng  

Floral
Bxvxpc8 dng  


Washed Work Trench Coat
Bxvxpc8 dng  Dusty Teal
Bxvxpc8 dng  


Washed Work Trench Coat
Bxvxpc8 dng  Black
Bxvxpc8 dng  Washed Work Trench Coat
Bxvxpc8 dng  White

我试过把这两个变量转一转,然后打印它能找到的最后一种颜色,代码运行良好,请帮助我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-12 05:58:16

我使用的是requests模块,而不是推荐您使用的urllib2模块。

这里的基本策略是,获取指向所有夹克的链接,然后为每个夹克分别刮取名称和样式。

完整代码:

代码语言:javascript
复制
import requests
from bs4 import BeautifulSoup

r = requests.get('http://www.supremenewyork.com/shop/all/jackets')
soup = BeautifulSoup(r.text, 'lxml')

for item in soup.find_all('div', class_='inner-article'):
    url = item.a['href']
    alt = item.find('img')['alt']
    req = requests.get('http://www.supremenewyork.com' + url)
    jacket_soup = BeautifulSoup(req.text, 'lxml')
    name = jacket_soup.find('h1', itemprop='name').text
    style = jacket_soup.find('p', itemprop='model').text

    print(alt, name, style)

输出:

代码语言:javascript
复制
Zbjng0wx ys Supreme®/Nike®/NBA Teams Warm-Up Jacket Denim
U 6wgdlykaw Supreme®/Nike®/NBA Teams Warm-Up Jacket White
Uqwzgxwn aw Supreme®/Nike®/NBA Teams Warm-Up Jacket Black
 ncksopv9nw Washed Work Trench Coat Floral
Iucyf1nlqi0 Washed Work Trench Coat Dusty Teal
Aiqn291frva Washed Work Trench Coat Black
Ttnqgbiqexi Washed Work Trench Coat White
Rlpgq3dzbdk Reflective Taping Hooded Pullover Orange
7cmo7ppbbv8 Reflective Taping Hooded Pullover Tan
Gyy1gqljohi Reflective Taping Hooded Pullover Green
Xgjdkznfyxi Reflective Taping Hooded Pullover Black
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49226935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档