我从一个网站上抓取了一些数据--多个页面的多个链接--当我运行代码时,它输出了我正在寻找的所有信息。问题是我很难将它转换为 Dataframe 并将其移动到CSV文件。我认为问题是我需要将我的dict转换为列表,但我不确定这一点。我不确定下一步该怎么做,因为我对Python还比较陌生。
from requests_html import HTMLSession
s = HTMLSession()
def get_product_links(page):
url = f'https://lakesshoweringspaces.com/catalogue-product-filter/page/{page}'
links = []
r = s.get(url)
products = r.html.find("article.contentwrapper section.collection-wrapper-item")
for item in products:
links.append(item.find("a", first=True).attrs['href'].replace('?', ''))
return links
#page1 = get_product_links(1)
#print(page1)
def parse_product(url):
r = s.get(url)
product_type = r.html.find('div.product-sidecontent h3', first=True).text.strip()
collection = r.html.find('div.product-sidecontent h1', first=True).text.strip()
description = r.html.find('div.information_grey_section h3.table-title', first=True).text.strip()
detail = r.html.find('table', first=True)
tabledata = [[c.text for c in row.find('td')] for row in detail.find('tr')][1:]
tableheader = [[c.text for c in row.find('th')] for row in detail.find('tr')][0]
table = [dict(zip(tableheader,t)) for t in tabledata]
product ={
'Product Type' : product_type,
'Collection' : collection,
'Short Description' : description,
'Product Data' : table,
}
return product
results = []
for x in range(1, 10):
print('Getting Page ', x)
urls = get_product_links(x)
for url in urls:
print(parse_product(url))
results.append(parse_product(url))
print('Total Results: ', len(results))
任何帮助/指导都将不胜感激。
1条答案
按热度按时间odopli941#
问题是dict列表大小不一致。
但是,下面的代码应该可以实现这个目的
该代码迭代字典列表(结果),并将数据转换为PandasDataFrame,然后将其保存到Excel文件。