Java 通过jsoup抓取Amazon时数据不整齐

Java 通过jsoup抓取Amazon时数据不整齐,java,html,css,web-scraping,jsoup,Java,Html,Css,Web Scraping,Jsoup,我正在使用jsoup库来抓取amazon页面。我想获得特定关键字的asin列表,它们在UI中的顺序是正确的。 我使用此选择器获取列表,但根据数据索引,asin不符合顺序 Elements resultList = doc.select("#search div.s-result-list div[data-asin]"); int count = 0; for (Element currentProduct : re

我正在使用
jsoup
库来抓取amazon页面。我想获得特定关键字的
asin
列表,它们在UI中的顺序是正确的。 我使用此选择器获取列表,但根据数据索引,
asin
不符合顺序

          Elements resultList = doc.select("#search div.s-result-list div[data-asin]");
          int count = 0;
          for (Element currentProduct : resultList) {
                String asin = currentProduct.attr("data-asin");
                String index = currentProduct.attr("data-index");
                if(asin.isEmpty())
                    {
                        continue;
                    }
            
                System.out.println(count + " " + asin + " " + index);
                count++;                   
          }

输出:

0 B07CZQGHL9 2

1 B015ESNT32 3

2 B07CZQGHL9 4

3 B015ESNT32 5

4 B07L748RJ2 6

5 B07F4297P9 8

6 B07G9W3B8K 9

7 B019CXDZAM 10

8 B07FWFMX6X 11

9 B01BAUVL0Q 12

10 B01HQTOX50 13

11 B07MQJXR5D 14

12 B0838JZ8KY 15

13 B071K7J6DW 16

14 B071FZ2Q2Z 17

15 B01KD8JCBG 18

16 B01E62WQTK 19

17 B077TF88BS 20

18 B0714LW3ZP 21

19 B01GEW89P022

20 B01AF7FA6Q 23

21 B074ZVJTS7 24

22 B07F3Z9DL7 25

23 B073QGQCNV 26

24 B073XC1F76 27

25 B07ZQTY2H9 28

26 B07V9K7DDZ 29

27 B073XCZPDQ 30

28 B06Y1MQC9Z 31

29 B0773X2XJT 32

30 B07G9W3B8K 33

31 B01AF7FA6Q 34

32 B00R2BQFBS 35

33 B07VP6YCK9 36

34 B07PJL2MXN 37

35 B07GJZ1MTP 38

36 B07D3GNKM6 39

37 B01LZFKETO 40

38 B07F42P9VC 41

39 B07RY3VNMD 42

40 B077Y9NVZJ 43

41 B073XF8JV5 44

42 B071ZNHV82 45

43 B07T7DJTWN 46

44 B073XC7QYY 47

45 B081B7HCP4 48

46 B01KD8J7OI 49

47 B077M7LDNT 50

48 B00N65QE8I 51

49 B00EF1KODI 52

50 B00N65R900 53

51 B07QX5X3Q2 54

52 B07NS7ZDD5 55

53 B006R2N3FE 56

54 B01MUA2CX6 57

55 B00N65RRMU 58

56 B07DJ7QLQ6 59

57 B0756B75MK 60

58 B01GEW89P061

59 B00R2BQKQ8 62

我将上述
输出
与amazon页面上该选择器
div.s-main-slot.s-result-list.s-search-results.sg行中的ASIN列表进行了比较。我将随机获得
asin
,此列表中的一些asin不在UI中。我不知道为什么会这样。我也尝试了《木偶演员》
,但仍然得到了同样的结果。也尝试过代理,但仍然没有运气

然后,我尝试了另一种方法,我使用
选择器
对单个
asin
进行选择,并将它们放入
数组列表

    Elements ist = doc.select("#search > div.s-desktop-width-max.s-desktop-content.sg-row > div.sg-col-20-of-24.sg-col-28-of-32.sg-col-16-of-20.sg-col.sg-col-32-of-36.sg-col-8-of-12.sg-col-12-of-16.sg-col-24-of-28 > div > span:nth-child(4) > div.s-main-slot.s-result-list.s-search-results.sg-row > div:nth-child(3)");
      String asin = ist.attr("data-asin");
      String index = ist.attr("data-index");
      System.out.println("ist: " + asin +" index: " + index);

但这样做的结果也完全出乎意料。我想得到这个结果列表的确切顺序,因为他们在每个关键字的用户界面。我的主要目标是为每个关键字只获取
前5名ASIN(产品)

这可能与获取文档的方式有关?。您正在使用URL吗?请求。在这种情况下,硒将是一个更好的选择。硒是我对他说的。我完全不明白你的意思。您发布的数据排序几乎完美—您没有澄清缺失的内容,也没有显示无法检索的数据的
查看源代码按钮的副本。数字被排序了,你真的看不出来吗?