Web scraping/crawling 用于在带分页的博客中获取特定 URL 详细信息
Web scraping/crawling for specific URL details within a blog with pagination
我需要实现一个脚本,从博客页面中删除 URL 并识别 URL 是否包含 link 中的某些关键字,然后在CSV 文件,博客 post URL 已识别关键字 link。
由于博客页面有分页和超过 35 pages/300 个博客 post,我不确定我该怎么做。我正在寻找的 URL 在每个单独的博客 post.
中
到目前为止,我已经设法按照一些教程学习如何从分页后的主页获取每个博客 post URL。
几乎相同,定义您的空列表以存储 specialUrls 的结果并迭代您的初始 url 结果列表:
data = []
for url in result:
r=requests.get(url).text
soup=BeautifulSoup(r,"lxml")
data.append('specialUrl')
为避免重复/不必要的请求遍历 set()
:
data = []
for url in set(result):
r=requests.get(url).text
soup=BeautifulSoup(r,"lxml")
data.append('FINDSPECIALURL')
以防万一,您也可以使用 break
离开 while 循环。
例子
注意 这只会从第一个博客页面抓取到您的结果的链接 - 从最后删除中断以抓取所有博客页面
from bs4 import BeautifulSoup
import pandas as pd
page=1
result=[]
while True:
r=requests.get(f"https://www.snapfish.co.uk/blog/page/{page}/").text
soup=BeautifulSoup(r,"lxml")
product=soup.find_all("article",{'class':'post_list'})
for data in product:
result.append(data.find('a').get('href'))
if soup.find("a",class_='next page-numbers') is None:
break
page+=1
break#remove break to scrape all the blog pages
data = []
for url in result:
r=requests.get(url).text
soup=BeautifulSoup(r,"lxml")
for a in soup.select('a[href*="design-detail"]'):
data.append({
'urlFrom':url,
'urlTo':a['href']
})
pd.DataFrame(data).drop_duplicates().to_csv('result.csv', index=False)
输出
我需要实现一个脚本,从博客页面中删除 URL 并识别 URL 是否包含 link 中的某些关键字,然后在CSV 文件,博客 post URL 已识别关键字 link。
由于博客页面有分页和超过 35 pages/300 个博客 post,我不确定我该怎么做。我正在寻找的 URL 在每个单独的博客 post.
中到目前为止,我已经设法按照一些教程学习如何从分页后的主页获取每个博客 post URL。
几乎相同,定义您的空列表以存储 specialUrls 的结果并迭代您的初始 url 结果列表:
data = []
for url in result:
r=requests.get(url).text
soup=BeautifulSoup(r,"lxml")
data.append('specialUrl')
为避免重复/不必要的请求遍历 set()
:
data = []
for url in set(result):
r=requests.get(url).text
soup=BeautifulSoup(r,"lxml")
data.append('FINDSPECIALURL')
以防万一,您也可以使用 break
离开 while 循环。
例子
注意 这只会从第一个博客页面抓取到您的结果的链接 - 从最后删除中断以抓取所有博客页面
from bs4 import BeautifulSoup
import pandas as pd
page=1
result=[]
while True:
r=requests.get(f"https://www.snapfish.co.uk/blog/page/{page}/").text
soup=BeautifulSoup(r,"lxml")
product=soup.find_all("article",{'class':'post_list'})
for data in product:
result.append(data.find('a').get('href'))
if soup.find("a",class_='next page-numbers') is None:
break
page+=1
break#remove break to scrape all the blog pages
data = []
for url in result:
r=requests.get(url).text
soup=BeautifulSoup(r,"lxml")
for a in soup.select('a[href*="design-detail"]'):
data.append({
'urlFrom':url,
'urlTo':a['href']
})
pd.DataFrame(data).drop_duplicates().to_csv('result.csv', index=False)