从html页面分析并获取链接

时间:2011-12-06 18:16:05

标签: python urllib2

我是python的新手,我在做一件简单的事情时遇到了一些问题。

我有一个html页面,我想分析它并在特定表格中获取一些链接。

在bash中我会使用lynx --source和grep / cut我没有问题..但在Python中我不知道该怎么做..

我想做类似的事情:

import urllib2

data = urllib2.urlopen("http://www.my_url.com")

这样做我得到了整个html页面。

然后我想:

for line in data.read():
    if "my_links" in line:
        print line

但似乎无法正常工作

3 个答案:

答案 0 :(得分:1)

在您的代码问题上,这将逐个字符地读取。如果您没有传递要读取的数据量。

for line in data.read():
你可以这样做:

line = data.readline()
while(line):
    print line
    line = data.readline()

此部分不完全是答案,但我建议您使用BeautifulSoup

import urllib2
from BeautifulSoup import BeautifulSoup
url = "http://www.my_url.com"
data = urllib2.urlopen(url).read()
soup = BeautifulSoup.BeautifulSoup(data)

all_links = soup.find('a')
# you can look for specific link

答案 1 :(得分:0)

在一般情况下,您需要Xpath用于这些目的。 示例:http://www.w3schools.com/xpath/xpath_examples.asp

Python有一个名为lxml的漂亮库: http://lxml.de/xpathxslt.html

答案 2 :(得分:0)

为什么不简单地使用enumerate()

site=urllib2.urlopen(r'http://www.rom.on.ca/en/join-us/jobs')

for i,j in enumerate(site):
     if "http://www.ontario.ca" in j: #j is the line
         print i+1 #i is the number start from 0 normally in the html code is 1 the first line so add +1

>>620