首页 > 解决方案 > 如何使用 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 的新手。不知道有没有什么方法可以获取英文数据?如果有任何现有的示例、模板或其他我可以使用的资源,那就更好了。

提前致谢!

标签: pythonhtmlweb-scraping

解决方案


我访问了您添加的网站,因此对于英语它添加了一个 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')

推荐阅读