美丽的汤蟒蛇 - 把名字放在一起/找到 - 找到所有

时间:2018-05-13 17:52:09

标签: python beautifulsoup

我遇到了美味的汤。从今天开始了解它,但无法找到解决问题的方法。

我想每次只获得1个链接,以及h1和p中写的内容。

article_name_list = soup.find(class_='turbolink_scroller')
#find all links in the div
article_name_list_items = article_name_list.find_all('article')

#loop to print all out
for article_name in article_name_list_items:
    names = article_name.find('h1')    
    color = article_name.find('p')
    print(names)
    print(color)

输出是:

<h1><a class="name-link" href="/shop/jackets/gw1diqgyr/km21a8hnc">Gonz Logo Coaches Jacket </a></h1>
<p><a class="name-link" href="/shop/jackets/gw1diqgyr/km21a8hnc">Red</a></p>

我想进入输出: HREF =&#34; blablabla&#34; Gonz Logo Coatches Jacket Red

并且每次(如果可能的话)将它放在变量中,例如link = href&#34; blablabla&#34;和名字=&#34; gonz标志......&#34;或3个变量,另一个变换颜色。

编辑在这里是页面的样子:

<div class="turbolink_scroller" id="container" style="opacity: 1;">
  <article>
    <div class="inner-article">
      <a style="height:150px;" href="/shop/jackets/h21snm5ld/jick90fel">
    <img width="150" height="150" src="//assets.supremenewyork.com/146917/vi/MCHFhUqvN0w.jpg" alt="Mchfhuqvn0w">
    <div class="sold_out_tag" style="">sold out</div>
  </a>
      <h1><a class="name-link" href="/shop/jackets/h21snm5ld/jick90fel">NY Tapestry Denim Chore Coat</a></h1>
      <p><a class="name-link" href="/shop/jackets/h21snm5ld/jick90fel">Maroon</a></p>
    </div>
  </article>
  <article></article>
  <article></article>
  <article></article>

</div>

编辑2:问题已解决(谢谢)

这是其他人的解决方案:

article_name_list = soup.find(class_='turbolink_scroller')
#find all links in the div
article_name_list_items = article_name_list.find_all('article')

#loop to print all out
for article_name in article_name_list_items:
    link = article_name.find('h1').find('a').get('href')
    names = article_name.find('h1').find('a').get_text()
    color = article_name.find('p').find('a').get_text()

    print(names)
    print(color)
    print(link)

谢谢大家的回答。

2 个答案:

答案 0 :(得分:1)

我假设您希望将每个列表放入单独的列表中。

name_list = []
link_list = []
color_list = []
for article_name in article_name_list_items:
    names = article_name.find('h1').find('a', class_ = 'name-link').get_text()    
    links = article_name.find('p').find('a', class_ = 'name-link').get('href')
    colors = article_name.find('p').find('a', class_ = 'name-link').get_text()

    name_list.append(names)
    link_list.append(links)
    color_list.append(colors)

不完全确定article_name_list_items看起来是什么,但names会为您提供<h1>元素的文字,links会获得href的{​​{1}} <p>元素,colors将为您提供<p>元素的文字。

您还可以选择将所有元素包含在列表列表中(初始化新列表list_of_all并将第3个列表追加替换为第二行中的单个追加):

list_of_all = []
list_of_all.append([names, links, colors])

答案 1 :(得分:0)

我相信你很亲密。但是,您应该告诉我们有关页面结构的更多信息。是否所有article结构都在同一个h1&gt; a,p&gt;结构中?

假设这个结构,则以下内容应该有效:

names = article_name.find('h1').find('a').get('href')    
color = article_name.find('p').find('a').get_text()