与Scrapy链接的Webscrape

2024-04-17 00:01:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我再次有一个问题提取一个特定的链接与刮。以下是HTML摘录:

<section class="test">
                    <div class="Testclass">
                        <form id="Form" name="FormName" method="get" action="#plpPaginationAnchor">
    <select id="pageSelectionBottom" name="page">
        <option value="0" disabled="" selected="">
                        Seite&nbsp;1&nbsp;von&nbsp;2</option>
                <option value="1">2</option>
                </select>
    <input type="hidden" name="sort" value="code-asc">
    <input type="hidden" name="q" value=":code-asc">
        <a class="nextpage" href="**LINK**" data-action="next" data-flight="control">
            <i class="icon="Next"></i>
        </a>
    </form>

我需要href标签中的链接。除此之外,我还尝试了以下方法:

url = response.css('div.testclass > a::attr(href)').extract_first()

如果有人能在这里帮助我,我将非常感激。你知道吗


Tags: namedivformidinputvalue链接type
3条回答

下面是如何在scrapy shell中执行:

> from scrapy.http import HtmlResponse
> 
> response = HtmlResponse(url="Test HTML String", body='<section class="test"><div class="Testclass"><form id="Form" name="FormName" method="get" action="#plpPaginationAnchor"><select id="pageSelectionBottom" name="page"><option value="0" disabled="" selected="">Seite&nbsp;1&nbsp;von&nbsp;2</option><option value="1">2</option></select><input type="hidden" name="sort" value="code-asc"><input type="hidden" name="q" value=":code-asc"><a class="nextpage" href="**LINK**" data-action="next" data-flight="control"><i class="icon="Next"></i></a></form>', encoding='utf-8')
> 
> response.css('a::attr(href)').extract_first()

好吧,当我试着用:响应.css(“section>;div>;form>;a::attr(href)”).extract\u first()获取链接。我不知道现在这是不是最好的解决方案,但它很管用

你试过把BeautifulSouprequests一起使用吗?你知道吗

下面是使用此模块的示例:

    import requests
    from bs4 import BeautifulSoup as bs

    l = requests.get(search)
    page = l.text
    soup= bs(page,'html.parser')
    link = soup.findAll('a',attrs={'class':'nextpage'})

像这样的东西,我用的是我的作品,我可能要编辑这篇文章以后,但使用bs4requests仍然是一个有效的方法。你知道吗

你可能不想做findAll如果有一个以上的<a>,如果他们有相同的类(例如youtube对每个视频都有这个类,使用findall将获得每个视频url进行搜索),它将检索链接

相关问题 更多 >