html - 為什么BeautifulSoup find_all 返回的list都不是按照網(wǎng)頁顯示順序排序的?
問題描述
我想爬糗百的段子,顯示作者,和對(duì)應(yīng)的段子,先只爬第一面
import requestsfrom bs4 import BeautifulSoup as bspage = 1url = '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 結(jié)果:
[’威信紅包接龍關(guān)注’, ’ZBZBZBZ’, ’養(yǎng)賊專業(yè)戶’, ’柱流年’, ’大風(fēng)起兮雪飛揚(yáng)’, ’依然家的麥芽糖’, ’小小&妖精’, ’蒼南下山耍流氓,黑衣格哥買紅糖’, ’九妹妹~’, ’親愛de橄欖綠’, ’有點(diǎn)胖的妮妮’, ’污奇奇’, ’沒辦法就是這么帥’, ’亦龍’, ’哇噻~桃寶’, ’單名一個(gè)飯字’, ’ni敢拿命疼我嗎?’, ’許我三日暖’, ’半闕詞曲丶’, ’誰動(dòng)了我的糧食?’]
html.fromstring xpath 也這樣
from lxml import htmlimport requestspage = 1url = '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 結(jié)果:
[’威信紅包接龍關(guān)注’, ’ZBZBZBZ’, ’養(yǎng)賊專業(yè)戶’, ’大風(fēng)起兮雪飛揚(yáng)’, ’柱流年’, ’依然家的麥芽糖’, ’小小&妖精’, ’蒼南下山耍流氓,黑衣格哥買紅糖’, ’九妹妹~’, ’親愛de橄欖綠’, ’有點(diǎn)胖的妮妮’, ’污奇奇’, ’沒辦法就是這么帥’, ’亦龍’, ’單名一個(gè)飯字’, ’ni敢拿命疼我嗎?’, ’許我三日暖’, ’半闕詞曲丶’, ’根@兒’, ’我是你的絕無僅有’]
但網(wǎng)頁的實(shí)際顯示順序是:
[’威信紅包接龍關(guān)注’, ’養(yǎng)賊專業(yè)戶’, ’ZBZBZBZ’, ’柱流年’, ’有點(diǎn)胖的妮妮’, ’依然家的麥芽糖’, ’小小&妖精’, ’大風(fēng)起兮雪飛揚(yáng)’, ’蒼南下山耍流氓,黑衣格哥買紅糖’, ’九妹妹~’, ’亦龍’...]
如何讓返回的list的元素的順序和網(wǎng)頁顯示順序相同?
問題解答
回答1:應(yīng)該是因?yàn)樗撁娴膬?nèi)容的排序是在變動(dòng)的。他的排序是根據(jù)評(píng)論里面的個(gè)“好笑”數(shù)來排的,好笑 數(shù)字接近的,順序變化正常,而且有時(shí)有新的段子加入這頁。你瀏覽器取得頁面的時(shí)間,和爬蟲爬取的時(shí)間不一樣,看到的段子順序不一樣很正常。
相關(guān)文章:
1. html5 - ElementUI table中el-table-column怎么設(shè)置百分比顯示。2. python - 使用readlines()方法讀取文件內(nèi)容后,再用for循環(huán)遍歷文件與變量匹配時(shí)出現(xiàn)疑難?3. 對(duì)mysql某個(gè)字段監(jiān)控的功能4. css3 - less或者scss 顏色計(jì)算的知識(shí)應(yīng)該怎么學(xué)?或者在哪里學(xué)?5. 注冊(cè)賬戶文字不能左右分離6. javascript - table列過多,有什么插件可以提供列排序和選擇顯示列的功能7. css - 網(wǎng)頁div區(qū)塊 像蘋果一樣可左右滑動(dòng) 手機(jī)與電腦8. javascript - 數(shù)組的過濾和渲染9. html - vue項(xiàng)目中用到了elementUI問題10. JavaScript事件
