欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

今日头条图片爬取(一)

程序员文章站 2022-04-26 10:28:59
...

万年老掉牙的头条街拍爬取,不过用来练习还是可以的,也有很多资料查询

1.获取总页面的代码

在头条的右上角搜索选项内搜索街拍,我们看见街拍首页了,然后看看是不是js加载的发现还真是,头条全部都是js加载的,这里可以用Toggle JavaScript(Chrome插件),这个可以去Chrome的插件网上下载,就是点一下js部分就会被禁止执行,方便点
今日头条图片爬取(一)

2.找js请求
  • F12打开开发者选项
    今日头条图片爬取(一)
  • 在XHR中就一个请求,点进去一看发现就是我们想要的,再看看headers
    今日头条图片爬取(一)
    Query String Parameters是构成url请求的数据,就是url的?后面的数据

  • 码出代码

    def get_bhtml(self,keyword,offset): #获取总页面的代码
        data = {  #为了方便更改所以变成字典样式
            "offset": offset,
            "format": "json",
            "keyword": keyword,
            "autoload": "true",
            "count": 20,
            "cur_tab": 1,
            "from": "search_tab"
        }
        url = 'https://www.toutiao.com/search_content/?'+urlencode(data)#urlencode用于把自典变成url形式
        response = requests.get(url,headers=self.headers).text

        return response  #返回页面的代码
3.获取详情页的url
  • 打开刚才的到的请求看看
    今日头条图片爬取(一)
    data的第二个字典是我们想要东西的第一个,share_url就是我们要的详情页的url,似乎大功告成,但是头条还有ajax,我们不可能只爬他刚加载的部分

  • ajax的爬取
    打开F12,然后不断往下翻,就多出来几个请求
    今日头条图片爬取(一)
    offset的作用看出来了
    今日头条图片爬取(一)
    也就offset变了

  • 代码

 def get_xurl(self,html): #传入总页面的网页代码
        url = re.compile('"share_url": "(.*?)",')
        urls = url.findall(html,re.S)
        url_list = [i for i in urls]

        return url_list  #返回各个详情页的url的列表