python中beautifulsoup怎么找出网页链接,使用python和BeautifulSoup从网页中检索链接

d6200ad8535f6e1046ab47823575a3d0.png

慕斯王

为了完整起见,BeautifulSoup 4版本也使用了服务器提供的编码:from bs4 import BeautifulSoupimport urllib2

resp = urllib2.urlopen("http://www.gpsbasecamp.com/national-parks")soup = BeautifulSoup(resp, from_encoding=resp.info().

getparam('charset'))for link in soup.find_all('a', href=True):

    print link['href']或者Python 3版本:from bs4 import BeautifulSoupimport urllib.request

resp = urllib.request.urlopen("http://www.gpsbasecamp.com/national-parks")soup = BeautifulSoup(resp, from_encoding=resp.info().

get_param('charset'))for link in soup.find_all('a', href=True):

    print(link['href'])和使用requests图书馆,它将在Python 2和3中运行:from bs4 import BeautifulSoupfrom bs4.dammit import EncodingDetectorimport requests

resp = requests.get("http://www.gpsbasecamp.com/national-parks")http_encoding = resp.encoding if 'charset' in resp.headers.

get('content-type', '').lower() else Nonehtml_encoding = EncodingDetector.find_declared_encoding(resp.content, is_html=True)

encoding = html_encoding or http_encoding

soup = BeautifulSoup(resp.content, from_encoding=encoding)for link in soup.find_all('a', href=True):

    print(link['href'])这个soup.find_all('a', href=True)呼叫找到所有元素具有href属性;跳过不带属性的元素。BeautifulSoup 3在2012年3月停止了开发,新项目应该始终使用BeautifulSoup 4。请注意,您应该保留从字节中解码HTML敬美丽汤..您可以通知BeautifulSoup在HTTP响应头中找到的字符集,以帮助解码,但是能,会,可以与在HTML本身中找到标题信息,这就是上面使用BeautifulSoup内部类方法的原因EncodingDetector.find_declared_encoding()以确保这样的嵌入式编码提示赢得了错误配置的服务器。带着requests,response.encoding属性默认为拉丁语-1,如果响应具有text/*mimetype,即使没有返回字符。这与HTTPRFCs是一致的,但与HTML解析一起使用时却很痛苦,因此当没有时,您应该忽略该属性。charset在内容类型标头中设置。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值