Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用beautifulsoup删除网页的某些部分_Python_Beautifulsoup_Httplib2 - Fatal编程技术网

Python 使用beautifulsoup删除网页的某些部分

Python 使用beautifulsoup删除网页的某些部分,python,beautifulsoup,httplib2,Python,Beautifulsoup,Httplib2,我试图阅读一个页面的链接,但我得到的链接比预期的多。 我正在做的是: http = httplib2.Http() status, page= http.request('page address') soup = BeautifulSoup(page,'html.parser', parse_only=SoupStrainer('a')) For link in soup: if link.has_attr('href'): print(link['href']) 我查看了该页面,

我试图阅读一个页面的链接,但我得到的链接比预期的多。 我正在做的是:

http = httplib2.Http()
status, page= http.request('page address')
soup = BeautifulSoup(page,'html.parser', parse_only=SoupStrainer('a'))
For link in soup:
 if link.has_attr('href'):
    print(link['href'])
我查看了该页面,发现它有两个主要组件:

<div id="main">
<aside id="secondary">

我不想要的链接来自
内部。仅从
获取链接的最简单方法是什么

感谢选择
下的
链接。您可以使用CSS选择器:

for a in soup.select('div#main a'):
    print(a)

仅适用于具有
href=
属性的链接:

for a in soup.select('div#main a[href]'):
    print(a['href'])

我建议使用beautifulsoup的
find_all
操作符:

my_links = soup.find_all("a", {"id":"main", "href":True})
my_links = [x["href"] for x in my_links]
假设您的网页包含父级
div
中的链接,您可以执行以下操作:

my_divs = soup.find_all("div", {"id":"main"})
my_links = [x.find_all("a", {"href":True}, recursive=False) for x in my_divs]
# flatten
my_links = [x for y in my_links for x in y]
# extract hrefs
my_links = [x["href"] for x in my_links]


工作得很好!谢谢