Python最热门最实用的8个Python爬虫项目源代码(附源码)

在这里插入图片描述


  • 包含编程资料、学习路线图、源代码、软件安装包等!【[点击这里]】!


前言

本次将分享8个Python爬虫的小案例,帮助大家更好地学习和了解Python爬虫的基础知识。以下是每个案例的简介和源代码:

1.爬取全网小说资源

  • 想要运行代码,需提前安装代码中的提到的三个库,不然是无法运行的!
import re
import requests
from lxml import etree

headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) 
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36"}

# 定义小说首页地址
index_url = 'https://www.biquge11.cc/read/12972/'

# 发送网络请求
response = requests.get(index_url, headers=headers)

# 筛选链接和标题
info_list = re.findall('<dd><a href ="(.*?)">(.*?)</a></dd>', response.text)
# 去除前面6个数据
info_list = info_list[6:]

# 遍历列表,得到每章的部分链接和标题
for info in info_list:
    # 从元组中取出部分链接进行拼接,获取每章的页面链接
    url = 'https://www.biquge11.cc' + info[0]

    # 获取数据
    response = requests.get(url, headers=headers)
    html_data = etree.HTML(response.text)

    # xpath筛选出文本数据,并将数据列表转换成字符串
    text_list = html_data.xpath('//div[@id="chaptercontent"]/text()')
    text = ''.join(text_list)

    # 添加标题行
    book_text = '\n\n' + info[1] + '\n\n'
    # 去除广告文本
    book_text += text.replace
    ('请收藏本站:https://www.biquge11.cc。笔趣阁手机版:https://m.biquge11.cc ', '').replace('  ', '\n')
    print("正在下载:" + info[1])
    print(book_text)

    # 保存到文件
    with open('斗破苍穹.txt', 'a', encoding='utf-8') as file:
        file.write(book_text)

2.爬取12306火车票

  • 同上
import time
import requests
import pandas as pd
from datetime import datetime

url = "https://kyfw.12306.cn/otn/userCommon/allProvince"

headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) 
    AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"}

content_json = requests.get(url=url, headers=headers).json()
print("等待3s")
time.sleep(3)  # 防止被检测(不要低于3)
print(content_json)  # 用于观察
# df = pd.DataFrame(content_json['data'])
content_list = pd.json_normalize(content_json['data'], errors='ignore')

if __name__ == '__main__':
    # 当前时间作为文件名后缀
    curr_time = datetime.now()
    timestamp = datetime.strftime(curr_time, '%Y-%m-%d %H-%M-%S')
    # time = time.time()  # 时间

    # 将 DataFrame 保存为 excel 文件
    content_list.to_excel(f"全国火车票代售点的省-{timestamp}.xlsx", index=False)
    print("保存完成!")

    # 查看 DataFrame 的行数和列数。
    rows = content_list.shape
    print("请求得到的表格行数与列数:", rows)

3.Python信息轰炸

  • 请勿乱使用,后果自负,请注意!!!
# coding: utf-8
__author__ = 'Mac'
__date__ = '19/10/31 15:05'

import time
from pynput.keyboard import Controller as key_cl
from pynput.mouse import Button, Controller

def keyboard_input(string):
    '''
    :param string: 你想要发送的信息
    :return: None
    '''
    keyboard = key_cl()  # 开始控制键盘
    keyboard.type(string)  # 键盘输入string


def mouse_click():  # 点击发送消息
    mouse = Controller()  # 开始控制鼠标
    mouse.press(Button.left)  # 按住鼠标左键
    mouse.release(Button.left)  # 放开鼠标左键


def main(number, string):  # 参数分别表示你要发多少条信息和发送的内容
    time.sleep(5)  # 此时暂停5s,方便你打开聊天窗,并把鼠标停放在发送按钮上
    for i in range(number):  # 用循环来控制你发送多少条消息
        keyboard_input(string + str(i))
        mouse_click()
        time.sleep(0.2)


if __name__ == '__main__':
    main(500, "这里输入轰炸语句")

4.爬取全国高校名单

  • 这个案例使用正则表达式和requests库爬取全国高校名单,并将这些信息保存到TXT文件中。
import requests
import re

# 请求URL
url = '<http://www.zuihaodaxue.com/zuihaodaxuepaiming2019.html>'
# 请求头部
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)
    AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'}

# 解析页面函数
def parse_html(html):
pattern = re.compile
('<tr class="alt">.*?<td>(.*?)</td>.*?<td><div align="left">.*?<a href="(.*?)" 
target="_blank">(.*?)</a></div></td>.*?<td>(.*?)</td>.*?<td>(.*?)</td>.*?</tr>', re.S)
    items = re.findall(pattern, html)
    for item in items:
        yield {
            '排名': item[0],
            '学校名称': item[2],
            '省市': item[3],
            '总分': item[4]
        }

# 保存数据函数
def save_data():
    f = open('university_top100.txt', 'w', encoding='utf-8')
    response = requests.get(url, headers=headers)
    for item in parse_html(response.text):
        f.write(str(item) + '\\\\n')
    f.close()

if __name__ == '__main__':
    save_data()

5.爬取中国天气网城市天气

  • 这个案例使用xpath和requests库爬取中国天气网的城市天气,并将这些信息保存到CSV文件中。
import requests
from lxml import etree
import csv

# 请求URL
url = '<http://www.weather.com.cn/weather1d/101010100.shtml>'
# 请求头部
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'}

# 解析页面函数
def parse_html(html):
    selector = etree.HTML(html)
    city = selector.xpath('//*[@id="around"]/div/div[1]/div[1]/h1/text()')[0]
    temperature = selector.xpath('//*[@id="around"]/div/div[1]/div[1]/p/i/text()')[0]
    weather = selector.xpath('//*[@id="around"]/div/div[1]/div[1]/p/@title')[0]
    wind = selector.xpath('//*[@id="around"]/div/div[1]/div[1]/p/span/text()')[0]
    return city, temperature, weather, wind

# 保存数据函数
def save_data():
    f = open('beijing_weather.csv', 'w', newline='', encoding='utf-8-sig')
    writer = csv.writer(f)
    writer.writerow(['城市', '温度', '天气', '风力'])
    for i in range(10):
        response = requests.get(url, headers=headers)
        city, temperature, weather, wind = parse_html(response.text)
        writer.writerow([city, temperature, weather, wind])
    f.close()

if __name__ == '__main__':
    save_data()

6.爬取当当网图书信息

  • 这个案例使用xpath和requests库爬取当当网图书信息,并将这些信息保存到CSV文件中。
import requests
from lxml import etree
import csv

# 请求URL
url = '<http://search.dangdang.com/?key=Python&act=input>'
# 请求头部
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) 
Chrome/58.0.3029.110 Safari/537.36'}

# 解析页面函数
def parse_html(html):
    selector = etree.HTML(html)
    book_list = selector.xpath('//*[@id="search_nature_rg"]/ul/li')
    for book in book_list:
        title = book.xpath('a/@title')[0]
        link = book.xpath('a/@href')[0]
        price = book.xpath('p[@class="price"]/span[@class="search_now_price"]/text()')[0]
        author = book.xpath('p[@class="search_book_author"]/span[1]/a/@title')[0]
        publish_date = book.xpath('p[@class="search_book_author"]/span[2]/text()')[0]
        publisher = book.xpath('p[@class="search_book_author"]/span[3]/a/@title')[0]
        yield {
            '书名': title,
            '链接': link,
            '价格': price,
            '作者': author,
            '出版日期': publish_date,
            '出版社': publisher
        }

# 保存数据函数
def save_data():
    f = open('dangdang_books.csv', 'w', newline='', encoding='utf-8-sig')
    writer = csv.writer(f)
    writer.writerow(['书名', '链接', '价格', '作者', '出版日期', '出版社'])
    response = requests.get(url, headers=headers)
    for item in parse_html(response.text):
        writer.writerow(item.values())
    f.close()

if __name__ == '__main__':
    save_data()

7.爬取糗事百科段子

  • 这个案例使用xpath和requests库爬取糗事百科的段子,并将这些信息保存到TXT文件中。
import requests
from lxml import etree

# 请求URL
url = '<https://www.qiushibaike.com/text/>'
# 请求头部
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/58.0.3029.110 Safari/537.36'}

# 解析页面函数
def parse_html(html):
    selector = etree.HTML(html)
    content_list = selector.xpath('//div[@class="content"]/span/text()')
    for content in content_list:
        yield content

# 保存数据函数
def save_data():
    f = open('qiushibaike_jokes.txt', 'w', encoding='utf-8')
    for i in range(3):
        url = '<https://www.qiushibaike.com/text/page/>' + str(i+1) + '/'
        response = requests.get(url, headers=headers)
        for content in parse_html(response.text):
            f.write(content + '\\\\n')
    f.close()

if __name__ == '__main__':
    save_data()

8.爬取新浪微博

  • 这个案例使用selenium和requests库爬取新浪微博,并将这些信息保存到TXT文件中。
import time
from selenium import webdriver
import requests

# 请求URL
url = '<https://weibo.com/>'
# 请求头部
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/58.0.3029.110 Safari/537.36'}

# 解析页面函数
def parse_html(html):
    print(html)

# 保存数据函数
def save_data():
    f = open('weibo.txt', 'w', encoding='utf-8')
    browser = webdriver.Chrome()
    browser.get(url)
    time.sleep(10)
    browser.find_element_by_name('username').send_keys('username')
    browser.find_element_by_name('password').send_keys('password')
    browser.find_element_by_class_name('W_btn_a').click()
    time.sleep(10)
    response = requests.get(url, headers=headers, cookies=browser.get_cookies())
    parse_html(response.text)
    browser.close()
    f.close()

if __name__ == '__main__':
    save_data()

  • 希望这8个小案例能够帮助大家更好地掌握Python爬虫的基础知识!
    图片

总结

  • 最后希望你编程学习上不急不躁,按照计划有条不紊推进,把任何一件事做到极致,都是不容易的,加油,努力!相信自己!

文末福利

  • 最后这里免费分享给大家一份Python全套学习资料,希望能帮到那些不满现状,想提升自己却又没有方向的朋友,也可以和我一起来学习交流呀。
包含编程资料、学习路线图、源代码、软件安装包等!【[点击这里]】领取!
  • ① Python所有方向的学习路线图,清楚各个方向要学什么东西
  • ② 100多节Python课程视频,涵盖必备基础、爬虫和数据分析
  • ③ 100多个Python实战案例,学习不再是只会理论
  • ④ 华为出品独家Python漫画教程,手机也能学习

可以扫描下方二维码领取【保证100%免费在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值