>  Q&A  >  본문

html - 为什么BeautifulSoup find_all 返回的list都不是按照网页显示顺序排序的?

我想爬糗百的段子,显示作者,和对应的段子,先只爬第一面

import requests
from bs4 import BeautifulSoup as bs
page = 1
url = "http://www.qiushibaike.com/hot/page/"
r = requests.get(url+str(page))
soup = bs(r.content,"html.parser")
names = []
for n in  soup.find_all("a",{"href":True,"target":True,"title":True}):
    names += [n.h2.get_text()]
print(names)

print 结果:

['威信红包接龙关注', 'ZBZBZBZ', '养贼专业户', '柱流年', '大风起兮雪飞扬', '依然家的麦芽糖', '小小&妖精', '苍南下山耍流氓,黑衣格哥买红糖', '九妹妹~', '亲爱de橄榄绿', '有点胖的妮妮', '污奇奇', '没办法就是这么帅', '亦龙', '哇噻~桃宝', '单名一个饭字', 'ni敢拿命疼我吗?', '许我三日暖', '半阙词曲丶', '谁动了我的粮食?']

html.fromstring xpath 也这样

from lxml import html
import requests
page = 1
url = "http://www.qiushibaike.com/hot/page/"
r = requests.get(url+str(page))
tree = html.fromstring(r.content)
print(tree.xpath('//*[@class="article block untagged mb15"]/p[1]/a[2]/h2/text()'))

print 结果:

['威信红包接龙关注', 'ZBZBZBZ', '养贼专业户', '大风起兮雪飞扬', '柱流年', '依然家的麦芽糖', '小小&妖精', '苍南下山耍流氓,黑衣格哥买红糖', '九妹妹~', '亲爱de橄榄绿', '有点胖的妮妮', '污奇奇', '没办法就是这么帅', '亦龙', '单名一个饭字', 'ni敢拿命疼我吗?', '许我三日暖', '半阙词曲丶', '根@儿', '我是你的绝无仅有']

但网页的实际显示顺序是:

['威信红包接龙关注', '养贼专业户', 'ZBZBZBZ', '柱流年', '有点胖的妮妮', '依然家的麦芽糖', '小小&妖精', '大风起兮雪飞扬', '苍南下山耍流氓,黑衣格哥买红糖', '九妹妹~',  '亦龙'...]

如何让返回的list的元素的顺序和网页显示顺序相同?

高洛峰高洛峰2741일 전585

모든 응답(1)나는 대답할 것이다

  • 大家讲道理

    大家讲道理2017-04-18 10:28:11

    페이지 콘텐츠 정렬이 바뀌기 때문일 것입니다. 그의 순위는 댓글에 있는 "재미있는" 숫자를 기준으로 합니다. 재미있는 숫자는 일반적으로 순서가 바뀌며, 때때로 이 페이지에 새로운 농담이 추가됩니다. 브라우저가 페이지를 검색하는 시간은 크롤러가 페이지를 크롤링하는 시간과 다릅니다. 표시되는 단락의 순서가 다른 것은 정상입니다.

    회신하다
    0
  • 취소회신하다