requests爬取4399游戏链接

首先,我们要安装requests库及lxml

pip install requests
pip install lxml

下载好之后开始,爬取4399网站
通过,requests的get方法请求页面,设置UA来模拟浏览器请求

# 导入,模块
import requests
from lxml import etree

# 要抓取页面的路由

url = 'http://www.4399.com'
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36"
}

# 请求页面,并返回 响应
response = requests.get(url,headers=headers)

# 将响应的结果转成str,两种方式
# html = response.text
html = response.content.decode(response.apparent_encoding)
print(html)

这样我们就获取到了页面的源码
接下来就是提取数据
确定页面元素的标签属性,利用lxml的xpath进行对数据的提取

# 解析数据
html = etree.HTML(html)

game_titles = html.xpath('//div[@class="mi-lr"]')
# print(game_titles,len(game_titles))
for tit in game_titles:
    # 获取游戏的类型
    title = tit.xpath('./a[@class="mi_tit"]/text()')[0]
    # 获取游戏类型的地址
    if title == '专辑':
        title_url = tit.xpath('./a[@class="mi_tit"]/@href')[0]
    else:
        title_url = url + tit.xpath('./a[@class="mi_tit"]/@href')[0]
    print(title,':',title_url)
    with open('./data/4399.txt', 'a', encoding='utf-8') as f:
        f.write(title + ':' + title_url + '\n' + '-' * 50 + '\n')
    print('-' * 50)
    # 获取类型对应的游戏
    games = tit.xpath('./div[@class="mi_d"]')[0]
    for game in games:
        game_name = game.xpath('./a/text()')
        if len(game_name) == 0:
            game_name = game.xpath('./a/b/text()')[0]
        else:
            game_name = game_name[0]
        game_url = url + game.xpath('./a/@href')[0]
        print(game_name,':',game_url)
        with open('./data/4399.txt', 'a',encoding='utf-8') as f:
            f.write(game_name+':'+game_url +'\n')
    with open('./data/4399.txt', 'a', encoding='utf-8') as f:
        f.write("=" * 50 + '\n' + '\n')
    print("=" * 50)
    print()
good_game_title = html.xpath('//div[@class="tm_fun h_3"]//a[@class="tit_a"]/text()')[0]
good_game_url = url + html.xpath('//div[@class="tm_fun h_3"]//a[@class="tit_a"]/@href')[0]

提取完成,接下来保存数据,
可以将数据保存为csv,txt等格式

with open('./data/4399.txt', 'a', encoding='utf-8') as f:
    f.write(good_game_title + ':' +good_game_url + '\n' + '\n')
print(good_game_title + ':' +good_game_url)

good_games = html.xpath('//div[@class="tm_fun h_3"]//li')
print(len(good_games))

for good in good_games:
    good_game_name = good.xpath('./a/text()')[0]
    good_game_path = url + good.xpath('./a/@href')[0]
    print(good_game_name+':'+good_game_path)
    with open('./data/4399.txt', 'a', encoding='utf-8') as f:
        f.write(good_game_name+':'+good_game_path + '\n' + '\n')

使用Python的requests爬取中国知网(CNKI)的内容需要特别注意,因为知网通常有反爬机制并且限制了非注册用户的数据访问权限。以下是一个简单的步骤概述: 1. **安装requests库**:首先确保已经安装了`requests`库,如果没有,可以运行 `pip install requests`。 2. **模拟请求头**:知网可能会检查请求头以判断是否是合法的用户访问。你需要设置一些基本的User-Agent,例如浏览器版本,以及可能需要的Cookie,以尽可能地模拟正常浏览器访问。 ```python import requests 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.3', # 可能需要的Cookie值,具体要看知网的要求 } ``` 3. **处理反爬机制**:知网可能会通过验证码、IP限制等方式阻止直接爬虫。如果遇到这种情况,可能需要使用代理IP、Selenium配合ChromeDriver动态渲染页面获取验证码,或者考虑使用专业的数据抓取工具如Scrapy。 4. **API访问**:若知网提供API服务,可以直接调用API获取数据。然而,大部分学术资源并不开放API,对于论文等详细信息,直接爬取网页内容可能更常见。 5. **遵守规定**:在爬取任何网站时,务必遵守相关法律法规和网站的Robots协议,尊重版权,不要进行大规模、频繁的爬取,以免触发封禁。 由于知网的具体反爬策略可能会改变,以上信息仅供参考,实际操作前应先了解最新的政策和技术限制。同时,很多敏感数据可能无法轻易获取到。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值