为了账号安全,请及时绑定邮箱和手机立即绑定

美丽的汤不适用于特定网站

美丽的汤不适用于特定网站

回首忆惘然 2022-07-12 15:54:10
我的 python 代码不起作用。它应该可以工作,但我不知道为什么......它只是给了 []url = "https://www.naver.com/"req = urllib.request.urlopen(url)res = req.read()soup = BeautifulSoup(res, 'html.parser')keywords = soup.find_all('span', class_='ah_k')keywords = [each_line.get_text().strip() for each_line in keywords[:20]]print(keywords)
查看完整描述

2 回答

?
炎炎设计

TA贡献1808条经验 获得超4个赞

如果您转到network Tab下方,XHR您将获得以下返回的链接keywords in json format。您不需要硒来获取关键字。


https://www.naver.com/srchrank?frm=main&ag=all&gr=1&ma=-2&si=0&en=0&sp=0


代码:


import requests

url='https://www.naver.com/srchrank?frm=main&ag=all&gr=1&ma=-2&si=0&en=0&sp=0'

res=requests.get(url).json()

print(res['data'])

for item in res['data']:

    print(item['keyword'])

在控制台上,第一次打印将返回 json 数据。


[{'rank': 1, 'keyword': '챔피언', 'keyword_synonyms': []}, {'rank': 2, 'keyword': '확진자', 'keyword_synonyms': ['코로나 확진자', '추가 확진자', '2차 감염', '우한 폐렴 2차 감염', '6번째 확진자', '확진', '신종코로나', '5번째 확진자', '3번째 확진자', '국내 코로나 확진자', '코로나 바이러스 확진자', '한국 코로나 바이러스 확진자', '평택보건소', '한국 우한폐렴 확진자', '평택 우한폐렴', '우한 전세기', '코로나 확진', '세번째 확진자', '전세기', '국내 우한 폐렴 확진자', '신종코로나 확진자', '우한 폐렴 확진자']}, {'rank': 3, 'keyword': '박한희 변호사', 'keyword_synonyms': []}, {'rank': 4, 'keyword': '서가대', 'keyword_synonyms': []}, {'rank': 5, 'keyword': '박한희', 'keyword_synonyms': []}, {'rank': 6, 'keyword': '500만달러', 'keyword_synonyms': []}, {'rank': 7, 'keyword': '2020 서울가요대상', 'keyword_synonyms': []}, {'rank': 8, 'keyword': '신종코로나바이러스 확진자', 'keyword_synonyms': []}, {'rank': 9, 'keyword': '엄세범', 'keyword_synonyms': []}, {'rank': 10, 'keyword': '판빙빙', 'keyword_synonyms': []}, {'rank': 11, 'keyword': 'who 비상사태', 'keyword_synonyms': []}, {'rank': 12, 'keyword': '임오경', 'keyword_synonyms': []}, {'rank': 13, 'keyword': '수젠텍', 'keyword_synonyms': []}, {'rank': 14, 'keyword': '한해 clip clop', 'keyword_synonyms': []}, {'rank': 15, 'keyword': '장정윤 작가', 'keyword_synonyms': []}, {'rank': 16, 'keyword': '읍참마속', 'keyword_synonyms': []}, {'rank': 17, 'keyword': '재심', 'keyword_synonyms': ['영화 재심']}, {'rank': 18, 'keyword': '아이돌룸', 'keyword_synonyms': []}, {'rank': 19, 'keyword': '조윤선', 'keyword_synonyms': []}, {'rank': 20, 'keyword': '조원태', 'keyword_synonyms': []}]

第二次打印将打印所有关键字。


챔피언

확진자

박한희 변호사

서가대

박한희

500만달러

2020 서울가요대상

신종코로나바이러스 확진자

엄세범

판빙빙

who 비상사태

임오경

수젠텍

한해 clip clop

장정윤 작가

읍참마속

재심

아이돌룸

조윤선

조원태


查看完整回答
反对 回复 2022-07-12
?
慕标5832272

TA贡献1966条经验 获得超4个赞

有一个解决方案需要安装 pyppeteer 和 simple_scrapy。


from simplified_scrapy.simplified_doc import SimplifiedDoc

from simplified_html.request_render import RequestRender


# req = RequestRender({ 'executablePath': '/Applications/chrome.app/Contents/MacOS/Google Chrome'})

req = RequestRender({ 'executablePath': 'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe'})

def callback(html,url,extr):

    doc = SimplifiedDoc(html)

    keywords = doc.selects('span.ah_k')        

    keywords = [each_line.text for each_line in keywords[:20]]

    print(keywords)

req.get("https://www.naver.com/", callback,selectorOrFunctionOrTimeout='//span[@class="ah_k"]')

结果:


['포레스트', '장정윤 작가', '나홀로집에3', '박한희', '500만달러', '엄세범', '손승연', '군무원', 'who 비상사태', '소유진 부모님 나이차

이', '맨유 맨시티', '진천', '한송네오텍', '진세연', '염동열', '임종석', '율희', '코미팜', '박한희 변호사', '김경란']

分享

编辑

跟随


查看完整回答
反对 回复 2022-07-12
  • 2 回答
  • 0 关注
  • 84 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信