Python爬取中国网站排名并写入文件【2020】

    技术2025-01-19  11

    why ? 昨天看中国网站总排名,发现每页只有30个排名,一页页翻太慢了,于是准备用Python将排名爬取下来 ,并保存到文件中。 爬取网站 : https://top.chinaz.com/all/

    源码

    import requests import re from requests.exceptions import RequestException # 将爬取的代理设置成浏览器,针对一些反爬网站 headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36' } # 获取一页的内容 def get_one_page(targetUrl): try: response = requests.get(targetUrl, headers) if (response.status_code == 200): # 状态码 =200 ,说明爬取正常 parse_one_page(response.content.decode()) return None except RequestException: return None # 通过正则表达式获取需要的数据 def parse_one_page(target_text): pattern = re.compile(r'<a href=".*? target="_blank" class="pr10 fz14">(.*?)</a>') myList = pattern.findall(target_text) result.extend(myList) # 爬取每一页内容 def crawl_each_url(): before = "https://top.chinaz.com/all/index_" after = ".html" get_one_page("https://top.chinaz.com/all/") # 获取第一页所需的元素 for i in range(2, 51): # 获取第 2 - 50 页内容 get_one_page(before + str(i) + after) # 将数据保存到当前路径下的 "中国网站排名.txt" def write_to_file(result_text): num = 1; with open("中国网站排名.txt", "a", encoding='utf-8') as f: f.write("排名 网站 \n") for i in result_text: f.writelines(str(num) + " " + str(i) + "\n") num += 1 if __name__ == '__main__': result = [] crawl_each_url() write_to_file(result)

    爬取内容如下 :

    Processed: 0.009, SQL: 9