python - 如何使用 Python 抓取多语言网页
问题描述
我正在使用 Python 从提供英语和日语的日本网站上抓取数据。链接在这里
问题是我得到了我需要的数据,但是使用了错误的语言(两种语言的链接是相同的)。我尝试检查 html 页面并看到元素“lang”如下:
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja" class="">
这是我使用的代码:
import requests
import lxml.html as lh
import pandas as pd
url='https://data.j-league.or.jp/SFMS01/search?team_ids=33&home_away_select=0'
page = requests.get(url)
doc = lh.fromstring(page.content)
tr_elements = doc.xpath('//tr')
col = []
i = 0
for t in tr_elements[0]:
i += 1
name = t.text_content()
print("{}".format(name))
col.append((name,[]))
在这一点上,我从页面中获得了表格的第一行,但是是日文版。我是 Python 和 scrapy 的新手。不知道有没有什么方法可以获取英文数据?如果有任何现有的示例、模板或其他我可以使用的资源,那就更好了。
提前致谢!
解决方案
我访问了您添加的网站,因此对于英语它添加了一个 cookie(查看Request URL: https://data.j-league.or.jp/SFMS01/search?team_ids=33&home_away_select=0
网络选项卡中的标题),您将看到
Set-Cookie: SFCM01LANG=en; Max-Age=63072000; Expires=Tue, 18-Oct-2022 19:14:29 GMT; Path=/
所以我基本上已经使用了,把你的代码片段改成这个
import requests
import lxml.html as lh
import pandas as pd
url='https://data.j-league.or.jp/SFMS01/search?team_ids=33&home_away_select=0'
page = requests.get(url, cookies={'SFCM01LANG':'en'})
doc = lh.fromstring(page.content)
tr_elements = doc.xpath('//tr')
推荐阅读
- python - 将 true 和 false 的布尔区域转换为 1 或 -1
- python-3.x - Python 下载带有请求与请求、枕头和 BytesIO 的图像。后者的优势是什么?
- .net - 如何恢复 wpf 对话框内容焦点?
- python - self.canvas.create_text 消失
- laravel - 如何在分页中发送两种类型的数据库表中的数据
- django - 使用 Traefik 反向代理来托管 WordPress 和 Django
- generics - 让函数接受 u16 和使用的简洁方法,包括不受约束的小正整数文字
- c++ - Raylib C++ Shapes Spawn on click
- javascript - 如果宽度大于屏幕尺寸,iOS/Android 上的高度也会改变(约束问题)
- c++ - 我不断收到 playsound 功能的此错误,我知道为什么