requests.get为什么得到的内容和查看源文件不一样?

来源:互联网 发布:迅雷已死 知乎 编辑:程序博客网 时间:2024/05/17 08:36

由于初学爬虫 尝试着在beausoup库和re正则间来回爬去加强对两种方法的理解 但是利用正则的时候出现了一个这么个问题

源文件打开 找到的元素 在requests.get竟然没有虽然很简单的一个问题 但是困扰了我半个多小时 这里吧一些经验总结下来 避免少走弯路


拿最简单的静态 贴吧为例

我们打开url:         http://tieba.baidu.com/i/i/fans?u=4f5fe69d8ee4b9904d16

如果我们想爬取关注的人员昵称

我们打开源文件 找到某个具体的姓名

打开是这样的



比如我们利用正则 找到名字的位置 

names=re.findall('<a id="add_blacklist_btn" href="#" n="(.*?)" inid="i"',html.text)     爬去名字 

返回竟然是一个空集 

当我们输出一下html.text时我们发现 竟然和源文件不一样



经过百度 才知道 贴吧不是js解析的网页 只要在headers加一个cookie即可

具体操作如下

headers={'User-Agent':'Mozilla/xxxxxxxxxxxxetaSr 1.0',
        'Host':'tieba.baidu.com',
         'Referer':'http://tieba.baidu.com/i/i/fans?u=4f5fe69d8ee4b9904d16',
        'Cookie':'BAIDUID=ED02DEFE60A617EF43B8F0F72EDE4DE6:FG=1; BIDUPSID=ED02DEFE60A617EF43B8F0F72EDE4DE6;PSTM=1508720102;TIEBA_USERTYPE=e916512815a19960b624ed59; bdshare_firstime=1508724078966; FP_LASTTIME=1510621935104;TIEBAUID=151fb0a2f5bc99698d3e338b;rpln_guide=1; BDUSS=pBOFZsUG5PdFAxMnFtQU5DWEIxMDVOTWYyZWxyczB-fm10cjVPaElCQ0d2anRhQVFBQUFBJCQAAAAAAAAAAAEAAABPX00WwO7A1gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIYxFFqGMRRaZk; STOKEN=180a7f530458725c97dfccdcbe99215e0ad64c49b8bc8e47d74a59bbbb9c0874; fixed_bar=1;wise_device=0;LONGID=374169423;Hm_lvt_98b9d8c2fd6608d564bf2ac2ae642948=1512029668,1512050336,1512050702,1512089508;Hm_lpvt_98b9d8c2fd6608d564bf2ac2ae642948=1512092098; BDRCVFR[feWj1Vr5u3D]=I67x6TjHwwYf0; PSINO=2;H_PS_PSSID=1466_21092_18559_25178_22075; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598',
        }

那么这些表头在哪里找呢


我们打开所要爬去的网页 按下F12  然后点里面的Network(需要点F5刷新下)

然后里面出现一个文件  我们点开 所有的信息都在里面了




把自己的 headers 加在get中就可以爬到和源文件一样的内容了

阅读全文
0 0