新手入门爬虫lxml+Requests+MongoDB

本文介绍如何使用lxml、Requests库进行爬虫,结合MongoDB存储爬取的一加社区数据,同时提及多线程处理的可能性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

新手入门爬虫lxml+Requests+MongoDB

测试爬取一加社区

import  requests
from lxml import etree
import  pymongo
import proxyIP
import time

def get_UrlInfos(url,proxyIp):
    header = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3493.3 Safari/537.36'
    }
    response = requests.get(url,proxies = proxyIp,headers = header).text
    html = etree.HTML(response)
    items = html.xpath('//tbody')
    for item in items:
        info = {
            'type':item.xpath('tr/th/div[2]/span/em/a')[0].text.strip() if len(item.xpath('tr/th/div[2]/span/em/a'))>0 else '',
            'title':item.xpath('tr/th/div[2]/a/text()')[0],
            'author':item.xpath('tr/th/div[2]/div/em[2]/a/text()')[0].strip(),
            'time': item.xpath('tr/th/div[2]/div/em[3]/span/text()')[0].strip() 
            if len(item.xpath('tr/th/div[2]/div/em[3]/span/text()'))>0 else item.xpath('tr/th/div[2]/div/em[3]/span/span/@title')[0],
            'view' :int(item.xpath('tr/th/div[2]/div/em[1]/text()')[0].split(':')[1]),
            'reply':int(item.xpath('tr/th/div[2]/div/em[1]/a/text()')[0].strip())
        }
        yijia.insert_one(info)
                
if __name__ == '__main__':
    start = time.time()
    mongoclient = pymongo.MongoClient('127.0.0.1',27017)
    mydb = mongoclient['mydb']
    yijia = mydb['yijia']
    proxyIp = proxyIP.getIp()
    urls = ['http://www.oneplusbbs.com/forum-116-{}.html'.format(i) for  i in range(2,1000)]
    for url in  urls:
        get_UrlInfos(url,proxyIp)
    end = time.time()
    print("单线程完成耗时:%d"%(end-start))

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
多线程可以自己用multiprocessing玩一下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值