【问题标题】:How to add inner text of link in Web Crawler?如何在网络爬虫中添加链接的内部文本?
【发布时间】:2019-07-11 02:39:12
【问题描述】:

在网络爬虫中,我想将超链接内部文本与 url 一起编写。我该如何实现呢?

前-

<a href="www.example.com">Example</a> 

对于这个链接,我想在抓取的文件中写成

“示例 www.example.com”

我在 python 中尝试过 LinkFinder,在这里我可以获取链接但无法获取内部文本。

from urllib.request import urlopen
from link_finder import LinkFinder

def gather_links(page_url):
        html_string = ''
        try:
            response = urlopen(page_url)
            if 'text/html' in response.getheader('Content-Type'):
                html_bytes = response.read()
                html_string = html_bytes.decode("utf-8")
            finder = LinkFinder('',page_url)
            finder.feed(html_string)
        except Exception as e:
            print(str(e))
            
        return finder.page_links()

【问题讨论】:

  • 您能举几个例子说明finder.page_links() 的输出是什么样的吗?
  • finder.page_links() 获取确切的链接 [标签 a 的 href 属性值],如 www.example.com
  • 你的问题还不清楚:如果你的链接是&lt;a href="www.example.com"&gt;Text&lt;/a&gt;,你想要的输出是Example www.example.com还是Text www.example.com
  • 我想要输出'Text www.example.com'

标签: python-3.x web-crawler


【解决方案1】:

由于您不仅要获取链接,还要获取链接中的文本,因此您需要使用 HTML 解析器库。这两个中的一个应该适合您:

link = '<a href="www.example.com">Text</a>'

import lxml.html

target = lxml.html.fromstring(link)

from bs4 import BeautifulSoup as bs

soup = bs(link,'lxml')
target = soup.find('a')

然后,使用任一库:

my_str = target.text+' '+target.get('href')
my_str

输出:

'文本 www.example.com'

【讨论】:

    猜你喜欢
    • 2016-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-23
    • 2013-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多