我是一个新的网页抓取,我正试图从这个特定网站的每一页抓取所有的视频链接,并将其写入一个csv文件。首先,我尝试从这个网站上抓取URL:
浏览全部19页。我遇到的问题是,同样的20个视频链接被写了19次(因为我试图浏览全部19页),而不是(大约)19组不同的URL
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()
非常感谢您提供的任何帮助,我决定以这种特定的方式编写代码,这样我就可以更好地在整个Bili站点中推广这一点
下面链接了一个屏幕截图,显示第一个链接如何总共重复19次:
试一试
最后一行
在倒数第二行中,您没有指定返回值
make_soup
。在scrape_url
函数中,使用了一个名为soup
的变量,但该变量只被赋值一次如果您将此行更改为
soup = scrape_url()
,那么它应该可以工作相关问题 更多 >
编程相关推荐