python简单爬虫

文章目录

  • 简单demo
  • 主函数调用爬虫

前面学习了
搭建简单数据库
python连接操作数据库
接下来使用BeautifulSoup来实现一个python的爬虫

简单demo

简单爬虫程序,这里以一个简单的例子来说明python爬虫的基本流程。
demo.py文件

from bs4 import BeautifulSoup
import urllib.request

# 爬取网络数据
def getDataFromUrl(url):
    # 配置一个requestHeader(User-Agent是用户代理,就是用户进行请求的时候,浏览器和系统的相关信息,有的页面需要这些,有些不需要)
    headersStr = {'User-Agent':'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}

    # 封装请求参数(例子中,如果没有header参数,会提示跳往登录页面,如果没有这个需求,可以直接调用下面的urlopen(url)来进行请求)
    req = urllib.request.Request(url, headers=headersStr)

    # 发起请求,拿到返回对象
    res = urllib.request.urlopen(req)

    # 通过返回的对象,获取html页面对象
    html = res.read().decode('utf-8')
    # print(html)

    # 解析html,第二个参数'lxml'可以理解为解析方式,得到解析后的对象
    soup = BeautifulSoup(html, 'lxml')

    # 通过解析后的对象获取指定元素(ul元素,class值为'J_valueList v-fixed'的元素集合)
    contents = soup.find_all('ul',attrs={'class':'J_valueList v-fixed'})

    # 拿到集合中的第一个ul元素
    contents_1 = contents[0]

    # 再解析获取到的元素,第一个参数表示把contents_1转换为Str格式,解析方式为'html.parser'
    # 我们可以看出来,获取页面相关的对象,是用BeautifulSoup(str,'parser')的方式来进行解析的
    # 可以通过这种方式来一层一层往下解析对象
    infoSoup = BeautifulSoup(str(contents_1), 'html.parser')

    # 通过解析后的对象获取到指定的元素
    # 假设通过BeautifulSoup(str,'parser')得到的对象是A,我们可以通过调用A.findall()来获取到符合要求的元素合集
    intro = infoSoup.find_all('a', attrs={'rel': 'nofollow'})

    # 遍历元素合集,打印出来
    for i in range(0, len(intro)):
        cbsStr = intro[i].text.replace(" ","").replace("\n","").replace(":",":").replace("\r","")
        print(cbsStr)

    print('')

主函数调用爬虫

调用的时候需要先将爬虫文件引用

import src.simpleReptile as SR

if __name__ == '__main__':
    # 调用接口,请求网页数据
    SR.getDataFromUrl('https://search.jd.com/Search?keyword=python&enc=utf-8&wq=python&pvid=1d1deed1537d4e0fb657f4b7d62aa016')

这里调用的是JD上,搜索python的结果页面的地址,爬虫过滤的是出版社,打印出的结果:

python简单爬虫_第1张图片

你可能感兴趣的:(SQL,爬虫与后台)