我的第一个简单python爬虫

我的第一个简单python爬虫

利用xpath解析数据,用openpyxl存储数据

明确目标挑战杯网址

找到想要的数据项目名称+项目简介

解析开始一开始我是用bs4但是发现数据提取得太杂乱,而且还有我不需要的字符串

解决方法利用xpath来解析

一开始直接按照官宣:

from lxml import etree#结果etree下面爆红

然后查资料问老师就:

from lxml import html#从html间接调用etree
import requests
res = requests.get(url)
tree = res.text#将html代码存入tree
tree = etree.HTML(tree)#调用etree来解析html
xpath_1 = '/html/body/div[2]/div/div[2]/div[2]/div/p/text()'#xpath语法用来提取数据
xpath_2 = '/html/body/div[2]/div/div[2]/div[2]/div/div/p[1]/a/text()'
print(xpath_1)
print(xpath_2)

解析到数据后发现只有一条,因为html中不同的xpath地址,那么就意味着上面[ ]中的数字可以修改

所以加入一个循环语句和一个拼接语法用来修改[ ]中的数据

for i in range(2,4):
    xpath_1 = '/html/body/div[2]/div/div[2]/div[{}]/div/p/text()'.format(i)
    xpath_2 = '/html/body/div[2]/div/div[2]/div[{}]/div/div/p[1]/a/text()'.format(i)

当然解析到了数据后还需要将数据存起来,在这里就需要用到openpyxl


最后写成完整版:

from lxml import html
import requests
import openpyxl
wb = openpyxl.Workbook()
sheet = wb.active
etree = html.etree
url_1 = 'http://www.tiaozhanbei.net/project/search/?category=&pro_type=&province_id=&keyword=%E6%99%BA%E8%83%BD&small_category='
url_list = []
url_list.append(url_1)
for x in range(30):
    url_2 = 'http://www.tiaozhanbei.net/project/search/?page={}&category=&province_id=&pro_type=&keyword=%E6%99%BA%E8%83%BD&small_category='.format(x)
    url_list.append(url_2)
for url in url_list:
​
    res = requests.get(url)
    tree = res.text
    tree = etree.HTML(tree)
    lists = []
    for i in range(2,12):
        xpath_1 = '/html/body/div[2]/div/div[2]/div[{}]/div/p/text()'.format(i)
        xpath_2 = '/html/body/div[2]/div/div[2]/div[{}]/div/div/p[1]/a/text()'.format(i)
        # print(xpath_2)
        title = tree.xpath(xpath_1)
        content = tree.xpath(xpath_2)
        lists.append(content)
        lists.append(title)
        print(lists)
    for list in lists:
        sheet.append(list)
wb.save('shuju.xlsx')
wb.close()

 


小结

目的:这个爬虫是完全我自己写的第一个爬虫用来爬取挑战杯的一些发明简介。

感悟:些这个爬虫时我遇到了两个问题在这里我将他们记录下来为了证明一种学习态度,

边写代码要变做记录,因为我还是一种只有理论没有时间的阶段!!!

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值