爬douban+neihan代码:

douban:


```python
import requests
import json


class DoubanSpider:
    def __init__(self):
        self.start_url_temp = "https://movie.douban.com/j/search_subjects?type=tv&tag=%E7%BE%8E%E5%89%A7&sort=recommend&page_limit=20&page_start={}"
        self.headers = {
            "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1"}

    def parse_url(self, url):  # 发送请求,获取响应
        response = requests.get(url, headers=self.headers)
        return response.content.decode()

    def get_content_list(self, json_str):  # 提取数据
        dict_ret = json.loads(json_str)
        content_list = dict_ret["subjects"]
        return content_list

    def save_content_list(self, content_list):  # 保存
        with open("douban.txt", "a", encoding="utf-8") as f:
            for content in content_list:
                f.write(json.dumps(content))
                f.write("\n")

    def run(self):  # 实现主要逻辑
        while True:
            num = 0
            # 1.start_url
            start_url = self.start_url_temp.format(num)
            # 2.发送请求,获取响应
            json_str = self.parse_url(start_url)
            # 3.提取数据
            content_list = self.get_content_list(json_str)
            # 4.保存
            self.save_content_list(content_list)
            if len(content_list) < 20:
                break
            # 5.构造下一页url地址,进入循环
            num += 20


spider = DoubanSpider()
spider.run()
neihanduanzi:


```python
import requests
import re
import json


class Neihan:
    def __init__(self):
        # self.url = "http://www.haoduanzi.com/wen/"
        self.url="http://www.haoduanzi.com/category/?1-{}.html"
        self.headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36"}

    def parse_url(self,url):  # 解析数据,获取响应
        response = requests.get(url, headers=self.headers)
        return response.content.decode()

    def get_first_page_content_list(self, html_str):  # 提取第一页的数据
        # content_list = re.findall(r"target=\"_blank\"><P>(.*?)</P>", html_str,re.S)
        content_list=re.findall(r"<P>[0-9](.*?)</P>",html_str,re.S)
        return content_list

    def save_content_list(self, content_list):
        with open("neihan.txt", "a")as f:
            for content in content_list:
                f.write(json.dumps(content, ensure_ascii=False))
                f.write("\n")
            f.write("/n")
        print("保存成功!")

    def run(self):
        for i in range(53):
            # 1.start_url
            url=self.url.format(i+1)
            # 2.发送请求,获取响应
            html_str = self.parse_url(url)
            # 3.提取数据
            content_list=self.get_first_page_content_list(html_str)
            # 4.保存
            self.save_content_list(content_list)
            # 5.循环
if __name__=='__main__':
    neihan=Neihan()
    neihan.run()
发布了16 篇原创文章 · 获赞 0 · 访问量 503

猜你喜欢

转载自blog.csdn.net/zhanlong11/article/details/104791097