从Python

时间:2015-11-24 15:10:30

标签: python html beautifulsoup data-extraction

我之前问过这个问题无济于事。我试图弄清楚如何实现bs4从网站的源代码中获取用于下载的链接。我无法弄清楚的问题是链接是在动态内容库中。 我删除了之前的html代码段,如下所示

我们只有在手动从网站上获取源代码后才能使用此脚本获取链接:

import re
enter code here

line = line.rstrip()
x = re.findall('href=[\'"]?([^\'" >]+)tif', line)
if len(x) > 0 :
    result.write('tif">link</a><br>\n<a href="'.join(x))

 `result.write('tif">link</a><br>\n\n</html>\n</body>\n')

result.write("There are " + len(x) + " links")       


print "Download HTML page created."

但只有进入网站ctrl + a - &gt;查看源 - &gt;选择所有&amp;复制 - &gt;粘贴到SourceCode.txt。我想从这一切中删除手工劳动。

我非常感谢任何信息/提示/建议!

修改

我想添加一些关于我们正在使用的网站的更多信息,图书馆内容只会在手动展开时显示。否则,内容(即,下载链接/ href * .tif)不可见。以下是我们看到的示例:

未打开库元素的网站源代码。

<html><body>

打开库元素后

源代码。

<html><body>
<h3>Library</h3>
<div id="libraryModalBody">

    <div><table><tbody>

    <tr>
    <td>Tile12</td>
    <td><a href="http://www.website.com/path/Tile12.zip">Button</a></td>
    </tr>

    </tbody></table></div>

</div> 

扩展所有下载选项后的源代码。

<html><body>
<h3>Library</h3>
<div id="libraryModalBody">
    <div><table><tbody>
    <tr>
    <td>Tile12</td>
    <td><a href="http://www.website.com/path/Tile12.zip">Button</a></td>
    </tr>
    <tr>
    <td>Tile12_Set1.tif</td>
    <td><a href="http://www.website.com/path/Tile12_Set1.tif">Button</a></td>
    </tr>
    <tr>
    <td>Tile12_Set2.tif</td>
    <td><a href="http://www.website.com/path/Tile12_Set2.tif">Button</a></td>
    </tr>
    </tbody></table></div>
</div>

我们的最终目标是获取下载链接,只需输入网站网址即可。问题似乎与内容的显示方式有关(即动态内容仅在手动扩展库后才可见。

2 个答案:

答案 0 :(得分:2)

不要尝试使用正则表达式解析HTML。 It's not possibleit won't work。请改用BeautifulSoup4:

+------------+
| Checksum   |
+------------+
| 1679935596 |
+------------+

答案 1 :(得分:0)

您还可以查看PyQuery库,它使用来自JQuery的(子)CSS选择器集:

pq = PyQuery(body)
pq('div.content div#filter-container div.filter-section')