首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >练习抓取

练习抓取
EN

Stack Overflow用户
提问于 2013-05-03 03:45:03
回答 4查看 127关注 0票数 0

(python 2.7.4)

我只想打印我所谓的url,如果它包含单词'watch‘,我已经进行了一些试验和错误,但无济于事。另外,我想知道是否有可能捕获每个视频的名称(从html),并将其分配给相应的视频,任何帮助或指针都将非常感谢。

im使用的链接是'http://thenewboston.org/list.php?cat=36

代码语言:javascript
复制
import urllib2
import re

def OPEN_URL(url):
req = urllib2.Request(url)
req.add_header('User-Agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3')
response = urllib2.urlopen(req)
link=response.read()
response.close()
return link

link=OPEN_URL('http://thenewboston.org/list.php?cat=36')
match=re.compile('href="(.+?)"').findall(link)
for url in match:
    url='http://thenewboston.org/'+url
    print url
EN

回答 4

Stack Overflow用户

发布于 2013-05-03 03:59:22

你可以使用一个html解析器来很容易地处理这个问题。

要检查子字符串成员资格,可以使用in

'watch.php' in url

此外,漂亮的汤或html解析器将允许您获得更精确的解析匹配。

代码语言:javascript
复制
<li class="contentList">
  <a href="watch.php?cat=36&amp;number=11">11 - Editing Sequences</a>
</li>

而不是所有的链接,看起来你只需要contentList中的链接??它可以很容易地使用xpath,或者漂亮的汤来查询,但是使用正则表达式会很困难吗?

票数 0
EN

Stack Overflow用户

发布于 2013-05-03 04:06:41

你会想看看Scrapy,这是一个用python解析和爬行的很棒的库。

也就是说,您只需扩展regexp,这样它不仅可以捕获href,还可以捕获其中的内容。所以像下面这样的东西

代码语言:javascript
复制
re.compile('href="(.+?)">(.+)</a>').findall(s)

当然这不会起作用,因为它很可能会捕获很多东西,但波兰语取决于你,而manual for re就是你所需要的。

票数 0
EN

Stack Overflow用户

发布于 2013-05-04 10:43:12

您可以尝试htql:

代码语言:javascript
复制
import htql
for href, tx in htql.query(link, "<a (href like 'watch%')>:href, tx"):
  print(href, tx)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16346441

复制
相关文章

相似问题

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