Div Python中的URL Scrape(BeatifulSoup)

时间:2018-04-26 04:50:25

标签: python html css typeerror

这里是div:

import { getAppContext, updateAppContext, onAppContextUpdate } from 'content.js';

// read foo
let foo = getAppContext('foo');

// update foo
updateAppContext('foo', 123);

// get notified when foo is updated
let removeListener = onAppContextUpdate('foo', function(newVal, oldVal) {
  console.log(newVal, oldVal);
});

// unlisten
removeListener();

我将<div class="theoplayer-poster" style="z-index: 1; display: inline-block; vertical-align: middle; background-repeat: no-repeat; background-position: 50% 50%; background-size: contain; cursor: pointer; margin: 0px; padding: 0px; position: absolute; top: 0px; right: 0px; bottom: 0px; left: 0px; height: 100%; background-image: url(&quot;//cdn.cnn.com/cnnnext/dam/assets/180424173851-ten-0425-00011501-exlarge-169.jpg&quot;);"></div> 放入字符串中。

这就是我的尝试:

url(&quot;//cdn.cnn.com/cnnnext/dam/assets/180424173851-ten-0425-00011501-exlarge-169.jpg&quot;)

然而,这导致def cnn_get_thumb(cnn_url): page = urlopen(cnn_url) soup = BeautifulSoup(page, 'html.parser') img = soup.find('div', class_="theoplayer-poster")['style':'url'] img = title.text.strip() return img 。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:3)

我认为您的主要问题是您指定的网址不包含该名称的div类。以下代码适用于URL的内容,希望它足以解释如何解析您想要的内容。

仅供参考,汤的快速打印将为您提供所有文本,将其发送到剪贴板,放入可以突出显示文本的编辑器中并搜索您之后的网址。导航回看div类等。

同样重新进行JS解析 - urlopen不会为你解析JS - 只有浏览器对象会这样做。如果你的字符串需要JS解析将它插入到dom中我怀疑你运气不好。

from urllib import urlopen
from bs4 import BeautifulSoup

# example div
# <div class="js-gigya-sharebar gigya-sharebar" data-description="April 25, 2018" data-image-src="//cdn.cnn.com/cnnnext/dam/assets/180424173851-ten-0425-00011501-super-tease.jpg" data-isshorturl="true" data-link="https://cnn.it/2HVJmx0" data-subtitle="" data-title="CNN 10 - April 25, 2018" data-twitter-account="CNN"></div>


def cnn_get_thumb(cnn_url):
    page = urlopen(cnn_url)
    soup = BeautifulSoup(page, 'html.parser')
    img = soup.find('div', class_="js-gigya-sharebar")['data-image-src']
    return img


print cnn_get_thumb("http://cnn.com/2018/04/24/cnn10/ten-content-weds/index.html")