gpt4 book ai didi

java网络爬虫无法识别非英文字符

转载 作者:太空宇宙 更新时间:2023-11-04 06:30:15 25 4
gpt4 key购买 nike

我抓取了电影列表并将它们存储在我的数据库中。对于仅包含英文字符的电影来说一切正常,但问题是某些包含非英文字符的电影名称无法正确显示。例如,意大利电影“Il piùrudele dei giorni”存储为“Il pi& ugrave;rudele dei giorni”。

有人可以告诉我是否有任何解决方案吗? (我知道我可以为爬虫设置语言,我也已经爬取了意大利语的电影标题,但是当我想爬取英文标题时,Imdb 中仍然有一些电影包含非英语字符)

编辑:这是我的代码:

String baseUrl = "http://www.imdb.com/search/title?at=0&count=250&sort=num_votes,desc&start="+start+"&title_type=feature&view=simple";

label1: try {

org.jsoup.Connection con = Jsoup.connect(baseUrl).userAgent("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.21 (KHTML, like Gecko) Chrome/19.0.1042.0 Safari/535.21").header("Accept-Language", "en");
con.timeout(30000).ignoreHttpErrors(true).followRedirects(true);
Response resp = con.execute();
Document doc = null;

if (resp.statusCode() == 200) {

doc = con.get();

Elements myElements = doc.getElementsByClass("results").first().getElementsByTag("table");
Elements trs = myElements.select(":not(thead) tr");

for (int i = 0; i < trs.size(); i++) {

Element tr = trs.get(i);
Elements tds = tr.select("td");

for (int j = 3; j < tds.size(); j++) {

Elements links = tds.select("a[href]");
String titleId = links.attr("href");
String movietitle = links.html();

//I ADDED YOUR CODE HERE
Charset c = Charset.forName("UTF-16BE");

ByteBuffer b = c.encode(movietitle);
for (int m = 0; b.hasRemaining(); m++) {
int charValue = (b.get()) & 0xff;
System.out.print((char) charValue);
}

// try{

// String query = "INSERT into test (movieName,ImdbId)" + "VALUES (?,?)";
// PreparedStatement preparedStmt = conn.prepareStatement(query);
// preparedStmt.setString (1, movietitle);
// preparedStmt.setString (2, titleId );
// }catch (Exception e)
// {
// e.printStackTrace();
// }

谢谢

最佳答案

在这里,我复制粘贴了问题中共享的字符串并尝试了

public class Test {
public static void main (String...a) throws Exception {
String s = "Il più crudele dei giorni";
Charset c = Charset.forName("UTF-16BE");

ByteBuffer b = c.encode(s);
for (int i = 0; b.hasRemaining(); i++) {
int charValue = (b.get()) & 0xff;
System.out.print((char) charValue);
}
}
}

这将打印控制台上的 s。我假设您已经拥有写入文件的部分代码。如果上面的代码适合您,您可以尝试集成它。

关于java网络爬虫无法识别非英文字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26202236/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com