【发布时间】:2015-07-25 05:17:48
【问题描述】:
我正在制作一个网络蜘蛛来自动化我的一些工作。 我有一张表,里面有很多驱动程序和针对不同操作系统的不同版本。 到目前为止一切正常,但我很难分离每个操作系统的链接。 我将在此处发布部分 html,但我无法发布整个页面。 问题是我不知道我是否可以抓取每个链接及其旁边的文本,我可以抓取所有链接,但我不知道哪些链接适用于什么操作系统。
这是表格中一个单元格的内容,我只需要获取链接以及操作系统版本(win8.1、win10、win7)
<p class="MsoNormal" style="mso-line-height-alt:9.3pt"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">SfP/StP
<a href="LINK_TO_FILE">AHWFW0609P_WinB</a>.zip
</span><span class="MsoHyperlink"><b><sup><span style="font-size:11.0pt;
font-family:"Calibri",sans-serif;color:#984806;background:white;text-decoration:
none;text-underline:none">Win8.1</span></sup></b></span><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"><o:p></o:p></span></p>
<p class="MsoNormal" style="mso-line-height-alt:9.3pt"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">SfP/StP
<a href="LINK_TO_FILE">AHWFW0553P_WinT</a></span><span style="color:#1F497D">.</span><span style="font-size:11.0pt;font-family:
"Calibri",sans-serif;color:#1F497D">zip</span><span class="MsoHyperlink"><b><sup><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#984806;
background:white;text-decoration:none;text-underline:none"> Win10</span></sup></b></span><span class="MsoHyperlink"><b><sup><span style="color:#984806;background:white;
text-decoration:none;text-underline:none"><o:p></o:p></span></sup></b></span></p>
这是我用来获取名称和链接的代码。
file = open(r"Path to HTML file", 'rb')
drivers = {}
rng_lst = [str(x) for x in range(5, 43)]
soup = bs4.BeautifulSoup(file)
table = soup.findAll('table')[0]
for row in table.findAll('tr'):
cells = row.findAll('td')
if len(cells) > 4:
cell_num = cells[1].get_text(strip=True)
if any(cell_num == n for n in rng_lst):
drv_name = cells[2].get_text(strip=True)
drivers[drv_name] = {'links': []}
links = cells[4].findAll('a')
for link in links:
drivers[drv_name]['links'].append(link.get('href'))
【问题讨论】:
-
你想要
LINK_TO_FILE旁边的文字吗? -
是的,在网页上它看起来像这样:链接到 file.zip Win8.1 链接到 file.zip Win10 所以我需要 WinXX 就在它旁边
标签: python python-3.x beautifulsoup