Python 未处理链接列表
Python not progressing a list of links
因此,由于我需要更详细的数据,因此我必须更深入地挖掘网站的 HTML 代码。我写了一个脚本,returns 为我提供了详细信息页面的特定 link 列表,但我无法让 Python 为我搜索此列表中的每个 link,它总是停在第一个。我做错了什么?
from BeautifulSoup import BeautifulSoup
import urllib2
from lxml import html
import requests
#Open site
html_page = urllib2.urlopen("http://www.sitetoscrape.ch/somesite.aspx")
#Inform BeautifulSoup
soup = BeautifulSoup(html_page)
#Search for the specific links
for link in soup.findAll('a', href=re.compile('/d/part/of/thelink/ineed.aspx')):
#print found links
print link.get('href')
#complete links
complete_links = 'http://www.sitetoscrape.ch' + link.get('href')
#print complete links
print complete_links
#
#EVERYTHING WORKS FINE TO THIS POINT
#
page = requests.get(complete_links)
tree = html.fromstring(page.text)
#Details
name = tree.xpath('//dl[@class="services"]')
for i in name:
print i.text_content()
另外:你能推荐什么教程让我学习如何将我的输出放入文件并清理它,给变量名等等?
我认为您需要 complete_links
中的 link 列表,而不是 单个 link。正如@Pynchia 和@lemonhead 所说,您要覆盖 complete_links
第一个 for 循环的每次迭代。
您需要进行两项更改:
将 link 追加到列表中并使用它来循环和废弃每个 link
# [...] Same code here
links_list = []
for link in soup.findAll('a', href=re.compile('/d/part/of/thelink/ineed.aspx')):
print link.get('href')
complete_links = 'http://www.sitetoscrape.ch' + link.get('href')
print complete_links
link_list.append(complete_links) # append new link to the list
在另一个循环中废弃每个累积的 link
for link in link_list:
page = requests.get(link)
tree = html.fromstring(page.text)
#Details
name = tree.xpath('//dl[@class="services"]')
for i in name:
print i.text_content()
PS:我建议 scrapy framework 完成这样的任务。
因此,由于我需要更详细的数据,因此我必须更深入地挖掘网站的 HTML 代码。我写了一个脚本,returns 为我提供了详细信息页面的特定 link 列表,但我无法让 Python 为我搜索此列表中的每个 link,它总是停在第一个。我做错了什么?
from BeautifulSoup import BeautifulSoup
import urllib2
from lxml import html
import requests
#Open site
html_page = urllib2.urlopen("http://www.sitetoscrape.ch/somesite.aspx")
#Inform BeautifulSoup
soup = BeautifulSoup(html_page)
#Search for the specific links
for link in soup.findAll('a', href=re.compile('/d/part/of/thelink/ineed.aspx')):
#print found links
print link.get('href')
#complete links
complete_links = 'http://www.sitetoscrape.ch' + link.get('href')
#print complete links
print complete_links
#
#EVERYTHING WORKS FINE TO THIS POINT
#
page = requests.get(complete_links)
tree = html.fromstring(page.text)
#Details
name = tree.xpath('//dl[@class="services"]')
for i in name:
print i.text_content()
另外:你能推荐什么教程让我学习如何将我的输出放入文件并清理它,给变量名等等?
我认为您需要 complete_links
中的 link 列表,而不是 单个 link。正如@Pynchia 和@lemonhead 所说,您要覆盖 complete_links
第一个 for 循环的每次迭代。
您需要进行两项更改:
将 link 追加到列表中并使用它来循环和废弃每个 link
# [...] Same code here links_list = [] for link in soup.findAll('a', href=re.compile('/d/part/of/thelink/ineed.aspx')): print link.get('href') complete_links = 'http://www.sitetoscrape.ch' + link.get('href') print complete_links link_list.append(complete_links) # append new link to the list
在另一个循环中废弃每个累积的 link
for link in link_list: page = requests.get(link) tree = html.fromstring(page.text) #Details name = tree.xpath('//dl[@class="services"]') for i in name: print i.text_content()
PS:我建议 scrapy framework 完成这样的任务。