首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Web抓取python中的多个页面并将其写入csv文件

Web抓取python中的多个页面并将其写入csv文件
EN

Stack Overflow用户
提问于 2020-06-04 10:48:03
回答 2查看 125关注 0票数 0

我是网络抓取的新手,我试图从这个特定网站的每个页面抓取所有视频链接,并将其写入csv文件。对于初学者,我正在尝试从这个站点抓取URL:

https://search.bilibili.com/all?keyword=%E3%82%A2%E3%83%8B%E3%82%B2%E3%83%A9%EF%BC%81%E3%83%87%E3%82%A3%E3%83%89%E3%82%A5%E3%83%BC%E3%83%BC%E3%83%B3

看完了全部19页。我遇到的问题是,相同的20个视频链接被写了19次(因为我试图浏览所有19个页面),而不是(大约) 19组不同的URL。

代码语言:javascript
复制
import requests 
from bs4 import BeautifulSoup
from csv import writer 

def make_soup(url): 
    response = requests.get(url)
    soup = BeautifulSoup(response.text, 'html.parser')
    return soup

def scrape_url():
    for video in soup.find_all('a', class_='img-anchor'):
        link = video['href'].replace('//','')
        csv_writer.writerow([link])

with open("videoLinks.csv", 'w') as csv_file:
        csv_writer = writer(csv_file)
        header = ['URLS']
        csv_writer.writerow(header)

        url = 'https://search.bilibili.com/all?keyword=%E3%82%A2%E3%83%8B%E3%82%B2%E3%83%A9%EF%BC%81%E3%83%87%E3%82%A3%E3%83%89%E3%82%A5%E3%83%BC%E3%83%BC%E3%83%B3'
        soup = make_soup(url)

        lastButton = soup.find_all(class_='page-item last')
        lastPage = lastButton[0].text
        lastPage = int(lastPage)
        #print(lastPage)

        page = 1
        pageExtension = ''

        scrape_url()

        while page < lastPage:
            page = page + 1
            if page == 1:
                pageExtension = ''
            else:
                pageExtension = '&page='+str(page)
            #print(url+pageExtension)
            fullUrl = url+pageExtension
            make_soup(fullUrl)
            scrape_url()

非常感谢任何帮助,我决定以这种特定的方式编写代码,这样我就可以更好地在整个BiliBili站点中推广这一点。

下面的屏幕截图显示了第一个链接总共重复了19次:

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-04 11:18:28

在倒数第二行中,您没有分配make_soup的返回值。在您的scrape_url函数中,您使用了一个名为soup的变量,但该变量只被赋值一次。

如果您将此行更改为soup = scrape_url(),则它应该可以工作。

票数 0
EN

Stack Overflow用户

发布于 2020-06-04 11:16:08

试一试

代码语言:javascript
复制
soup = make_soup(fullurl)

在倒数第二行中

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62186038

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档