python从websi中提取数据

2024-10-02 02:39:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从this page中获取数据。以下是我当前的代码:

buf = cStringIO.StringIO()
c = pycurl.Curl()
c.setopt(c.URL, "http://www.guardalo.org/99407/")
c.setopt(c.VERBOSE, 0)
c.setopt(c.WRITEFUNCTION, buf.write)
c.setopt(c.CONNECTTIMEOUT, 15)
c.setopt(c.TIMEOUT, 15)
c.setopt(c.SSL_VERIFYPEER, 0)
c.setopt(c.SSL_VERIFYHOST, 0)
c.setopt(c.USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0) Gecko/20100101 Firefox/8.0')
c.perform()
body = buf.getvalue()
c.close()

response = HtmlResponse(url='http://www.guardalo.org/99407/', body=body)
print Selector(response=response).xpath('//edindex/text()').extract()

它工作,但我需要标题,视频链接和描述作为单独的变量。我怎样才能做到这一点?在


Tags: 代码orghttpsslresponsewwwpagebody
2条回答

可使用//title/text()提取标题,视频源链接通过//video/source/@src

selector = Selector(response=response)

title = selector.xpath('//title/text()').extract()[0]
description = selector.xpath('//edindex/text()').extract()
video_sources = selector.xpath('//video/source/@src').extract()[0]

code_url = selector.xpath('//meta[@name="EdImage"]/@content').extract()[0]
code = re.search(r'(\w+)-play-small.jpg$', code_url).group(1)

print title
print description
print video_sources
print code

印刷品:

^{pr2}$

不需要scrapy只需使用一个更简单的工具(甚至是最简单的urllib.urlopen(theurl).read())获取单个页面的HTML然后用BeautifulSoup分析HTML。从一个简单的“视图源”来看,您似乎在寻找:

<title>Best Babies Laughing Video Compilation 2012 [HD] - Guardalo</title>

(标题),三者之一:

^{pr2}$

(视频链接,复数形式,我不能选择一个,因为你不告诉我们你喜欢哪种格式!-),和

<meta name="description" content="Ciao a tutti amici di guardalo,quello che propongo oggi è un video sui neonati buffi con risate" />

(描述)。beauthulsoup使得每一个都变得非常简单,例如在需要的进口之后

html = urllib.urlopen('http://www.guardalo.org/99407/').read()
soup = BeautifulSoup(html)
title = soup.find('title').text

等等(但是你必须选择一个视频链接,我在他们的来源中看到他们被称为“预录”,所以可能是实际的非广告视频的链接实际上是不是在页面上,而是只有在登录之后才可以访问。在

相关问题 更多 >

    热门问题