Python爬虫小练习

爬虫的本质

爬虫的本质就是通过程序模拟正常人向网站发送请求获取信息。

关于爬虫的一些闲聊

按照我们的常识来说,我们不可能在1秒钟访问这个网站100次,请求100次数据,所以过多的请求很有可能会被网站认为你在使用脚本进行爬虫,可能会封你IP,或者说当你爬虫不修改UA头时,python会默认告诉网站自己是一个爬虫脚本,相当于明牌告诉别人自己是来爬你网站。而且要是网站有WAF,也可能设置有策略,不让你爬,当然要是你手法够硬,也是可以绕的。当然作者水平有限,并且各位在爬虫的时候要清楚哪些东西可以爬,哪些东西不能爬,不要触及了法律的红线。年纪轻轻就吃上了国家饭.QAQ

爬取某小说网站(URL已码)

import requests
import os
import parsel


end=input("你想爬取多少章?(阿拉伯数字输入,大于2):")
end= int(end)
print("正在爬取请稍等...")



#爬取第一页的内容
print("==============正在爬取第1章==============")
url = f'xxxxxxx'

response = requests.get(url=url)
response.encoding = response.apparent_encoding
html = response.text

# 解析html
selector = parsel.Selector(html)

# 获取文章标题
title = selector.css('.content h1::text').get()
#print(title)

# 获取小标题内容
content_1 = selector.css('#chaptercontent::text').get()
#print(content_1)

# passage = ''.join(selector.xpath('//div[@id="chaptercontent"]//text()').getall()).strip()
passage = ''.join(selector.css('#chaptercontent').xpath('./text()').getall()[:-4])
passage = passage.replace('  ', '\n')
#print(passage)

filename = 'xxxxxx\\'
if not os.path.exists(filename):
    os.mkdir(filename)
with open(filename +title+ '.txt', mode='wb') as f:

    f.write(passage.encode('utf-8'))


#后续内容

for page in range(2,end+1):
    print(f"==============正在爬取第{page}章==============")
    url = f'xxxxxxxxxxxxxxxxxxx'

    response=requests.get(url=url)
    response.encoding = response.apparent_encoding
    html=response.text


    # 解析html
    selector=parsel.Selector(html)

    # 获取文章标题
    title=selector.css('.content h1::text').get()
    #print(title)

    # 获取小标题内容
    #content_1 = selector.css('#chaptercontent::text').get()
    #print(content_1)

    #passage = ''.join(selector.xpath('//div[@id="chaptercontent"]//text()').getall()).strip()
    passage = ''.join(selector.css('#chaptercontent').xpath('./text()').getall()[:-4])
    passage=passage.replace('  ','\n')
    #print(passage)

    with open(filename + title+ '.txt', mode='wb') as f:
        f.write(passage.encode('utf-8'))
print("爬取完成,已保存在同目录下")

代码思路

总之,我觉得无论是爬那个网站,思路上都大体差不多。

  1. 获取网站的html源码
  2. 用html解析器解析(我这里用的是parsel模块)
  3. 分析网页的结构,用解析器提炼出你想获取的东西
  4. 先获取单个,然后根据相同结构的页面用循环来实现翻页获取大量资源
  5. 如果爬取的资源过多,建议设置一个sleep函数,不要让服务器的负担过大,给网站的管理者造成负担。

ps:注意编码格式,很多时候打印不出东西都是因为格式的问题。本人还是学生,也是初学者,代码写的比较草率,旨在记录学习。如有错误欢迎指出改正。

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然!我可以为您提供一些关于Python爬虫数据练习的建议。以下是一些常见的练习项目,您可以根据自己的兴趣和需求选择其中之一或多个进行练习: 1. 爬取网页数据:使用Python的 requests 库或者 scrapy 框架,爬取一个网页的内容,并将其保存到本地文件或者数据库中。 2. 数据解析:在上述爬取的网页数据中,解析出您感兴趣的信息。可以使用正则表达式、BeautifulSoup 或者 lxml 等库来解析 HTML 或 XML 数据。 3. 图片爬取:通过爬虫程序下载某个网站上的图片。您可以使用 requests 库下载图片,也可以使用第三方库如 urllib 或者 wget。 4. 数据存储:将爬取到的数据存储到数据库中,如 MySQL、SQLite 或者 MongoDB。您可以使用 Python 的数据库模块(如 pymysql、sqlite3 或 pymongo)来实现数据存储功能。 5. 动态网页爬取:对于使用 JavaScript 动态生成内容的网页,您可以使用 Selenium 或者 Pyppeteer 等工具来模拟浏览器行为,以获取动态生成的数据。 6. API 数据爬取:通过调用API接口获取数据。许多网站提供API接口供开发者获取数据,您可以使用 Python 的 requests 库来发送请求,并处理返回的 JSON 数据。 请注意,在进行爬虫练习时,务必遵守网站的爬虫规则和法律法规,不要对目标网站造成不必要的压力或侵犯其合法权益。 希望这些练习能帮助您提升Python爬虫的技能!如果您有任何进一步的问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值