Fashiontrends.pk <dl class="boccat">
包含所有链接。我们想要编写一些代码来查找该部分,然后获取该部分<dd>
元素中的所有链接。
from bs4 import BeautifulSoup
from urllib2 import urlopen
BASE_URL = "http://www.fashiontrends.pk"
def get_category_links(section_url):
html = urlopen(section_url).read()
soup = BeautifulSoup(html, "lxml")
boccat = soup.find("dl", "boccat")
category_links = [BASE_URL + dd.a["href"] for dd in boccat.findAll("dd")]
return category_links
答案 0 :(得分:0)
使用CSS selector限制搜索:
links = soup.select('dl.boccat dd a[href]')
只会找到href
属性的链接对象,该属性位于dd
标记下的dl
标记下boccat
类。
如果(某些)您的网址是相对的,您可以在此处使用urlparse.urljoin()
:
from urlparse import urljoin
def get_category_links(section_url):
response = urlopen(section_url)
soup = BeautifulSoup(response, "lxml")
return [urljoin(BASE_URL, link["href"])
for link in soup.select('dl.boccat dd a[href]')]
无需在响应对象上调用.read()
; BeautifulSoup()
会为您拨打电话。
但是,您提供给我们的特定网址在投放的HTML中没有<dl class="boccat">
个元素,无论是浏览器还是urllib2
:
>>> from urllib2 import urlopen
>>> source = urlopen('http://www.fashiontrends.pk').read()
>>> '<dl' in source
False
页面中没有<dl>
个标记,完全停止。您没有向我们展示任何代码,表明您 加载的页面。