美文网首页
2018-02-28爬取简书推荐作者列表

2018-02-28爬取简书推荐作者列表

作者: kunkun_1230 | 来源:发表于2018-02-28 21:56 被阅读0次

过了个年,感觉有些代码生疏了,所以先爬个简书的推荐作者列表练个手。

这个网页很简单,而且连反爬措施都没有,很适合新手进行练习。

爬取的过程主要就是不停的迭代加载更多,然后不停的爬取页面读取数据,就是这么简单。

网页结构

从上面这张图可以看到,点击“加载更多”后,请求网址为:

“https://www.jianshu.com/recommendations/users?page=2”

可以进一步点击,在“响应”里面确认是否返回了需要的作者信息。确认后,将这个网址键入浏览器,就可以看到上次加载更多后,出现的作者了。

类似的,只要改变网址后面的页码数量就可以爬取到所有的作者页面了。

获得页码信息的代码如下,

def read_pages(url):

    text=requests.get(url,headers=header).content

    return text

爬取过程中发现其实不需要headers也是可以爬取的,但我在一开始加入headers时,反而出现了错误:

加入headers后的错误提示

后来仔细检查了headers里面的内容,发现复制的时候出现了点错误,里面复制的时候出现省略号,没有写全,以后注意啊!

“sensorsdata2015jssdkcross=%7B%…_mode=day; default_font=font2”

随后读取每一页的信息就好了。这里我为了练手,用了xpath和BeautifulSoup两种方式:

##def get_params(content):

##    selector=etree.HTML(content)

##    #name=link=i=1

##    try:

##        for i in range(1,25):

##        #while name and link:

##            name=selector.xpath('/html/body/div/div/div[%s]/div/a[1]/h4/text()'%i)[0].strip()

##            link=selector.xpath('/html/body/div/div/div[%s]/div/a[1]/@href'%i)[0]

##            print(name,link)

##    except IndexError:

##        None

##    print(name,link)

def get_params(content):

    s=soup(content,'lxml')

    for each in s.find_all('div',attrs={'class':'col-xs-8'}):

        name=each.h4.text.strip()

        link=each.a['href']

        print(name,link)

最后,用print把数据都打印出来就好

相关文章

网友评论

      本文标题:2018-02-28爬取简书推荐作者列表

      本文链接:https://www.haomeiwen.com/subject/fsxwxftx.html