requests_html 渲染向下滚动,脚本不工作
requests_html render scrolldown, script not working
我需要从向下滚动加载数据的网站抓取数据。
网站在向下滚动前返回了 5 个数据,预期在向下滚动完成后返回了 80 个数据。
我正在使用 requests_html 模块并尝试了这个
from requests_html import HTML, HTMLSession
keyword = '유산균'
n = 1
url = f'https://search.shopping.naver.com/search/all?frm=NVSHATC&origQuery={keyword}&pagingIndex={n}&pagingSize=80&productSet=total&query={keyword}&sort=rel×tamp=&viewType=list'
session = HTMLSession()
ses = session.get(url)
html = HTML(html=ses.text)
item_list = html.find('div.basicList_title__3P9Q7')
print(len(item_list))
ses.html.render(scrolldown=100, sleep=.1)
'''
ses.html.render(script="window.scrollTo(0, 99999)", sleep= 10)
also tried not worked either
'''
print(len(item_list))
我预计结果为 5、80,但两个打印返回的结果相同。 5 和 5.
我的代码有什么问题?
当您在加载站点时监视 network activity 时,您会看到它从 api 加载搜索结果。这意味着您可以直接从 api 检索数据而无需 scraping。这是一个将第一页加载为 pandas 数据框的示例:
import requests
import pandas as pd
keyword = '유산균'
n = 1
r = requests.get(f'https://search.shopping.naver.com/api/search/all?sort=rel&pagingIndex={n}&pagingSize=80&viewType=list&productSet=total&deliveryFee=&deliveryTypeValue=&frm=NVSHATC&query={keyword}&origQuery={keyword}').json()
df = pd.DataFrame(r['shoppingResult']['products'])
您可以添加一个循环来检索下一页等。
我需要从向下滚动加载数据的网站抓取数据。 网站在向下滚动前返回了 5 个数据,预期在向下滚动完成后返回了 80 个数据。 我正在使用 requests_html 模块并尝试了这个
from requests_html import HTML, HTMLSession
keyword = '유산균'
n = 1
url = f'https://search.shopping.naver.com/search/all?frm=NVSHATC&origQuery={keyword}&pagingIndex={n}&pagingSize=80&productSet=total&query={keyword}&sort=rel×tamp=&viewType=list'
session = HTMLSession()
ses = session.get(url)
html = HTML(html=ses.text)
item_list = html.find('div.basicList_title__3P9Q7')
print(len(item_list))
ses.html.render(scrolldown=100, sleep=.1)
'''
ses.html.render(script="window.scrollTo(0, 99999)", sleep= 10)
also tried not worked either
'''
print(len(item_list))
我预计结果为 5、80,但两个打印返回的结果相同。 5 和 5.
我的代码有什么问题?
当您在加载站点时监视 network activity 时,您会看到它从 api 加载搜索结果。这意味着您可以直接从 api 检索数据而无需 scraping。这是一个将第一页加载为 pandas 数据框的示例:
import requests
import pandas as pd
keyword = '유산균'
n = 1
r = requests.get(f'https://search.shopping.naver.com/api/search/all?sort=rel&pagingIndex={n}&pagingSize=80&viewType=list&productSet=total&deliveryFee=&deliveryTypeValue=&frm=NVSHATC&query={keyword}&origQuery={keyword}').json()
df = pd.DataFrame(r['shoppingResult']['products'])
您可以添加一个循环来检索下一页等。