自己做的网站怎么被搜索出来,制作网页app,泰州做网站淘宝,常州市城市建设集团有限公司网站大家好#xff0c;随着互联网的快速发展#xff0c;数据成为了新时代的石油。Python作为一种高效、易学的编程语言#xff0c;在数据采集领域有着广泛的应用。本文将详细讲解Python爬虫的原理、常用库以及实战案例#xff0c;帮助读者掌握爬虫技能。
一、爬虫原理
爬虫随着互联网的快速发展数据成为了新时代的石油。Python作为一种高效、易学的编程语言在数据采集领域有着广泛的应用。本文将详细讲解Python爬虫的原理、常用库以及实战案例帮助读者掌握爬虫技能。
一、爬虫原理
爬虫又称网络爬虫是一种自动获取网页内容的程序。它模拟人类浏览网页的行为发送HTTP请求获取网页源代码再通过解析、提取等技术手段获取所需数据。
1. HTTP请求与响应过程
爬虫首先向目标网站发送HTTP请求请求可以包含多种参数如URL、请求方法GET或POST、请求头Headers等。服务器接收到请求后返回相应的HTTP响应包括状态码、响应头和响应体网页内容。
2. 常用爬虫技术
请求库如requests、aiohttp等用于发送HTTP请求。
解析库如BeautifulSoup、lxml、PyQuery等用于解析网页内容。
存储库如pandas、SQLite等用于存储爬取到的数据。
异步库如asyncio、aiohttp等用于实现异步爬虫提高爬取效率。 二、Python爬虫常用库
1. 请求库
requests简洁、强大的HTTP库支持HTTP连接保持和连接池支持SSL证书验证、Cookies等。
aiohttp基于asyncio的异步HTTP网络库适用于需要高并发的爬虫场景。
2. 解析库
BeautifulSoup一个HTML和XML的解析库简单易用支持多种解析器。
lxml一个高效的XML和HTML解析库支持XPath和CSS选择器。
PyQuery一个Python版的jQuery语法与jQuery类似易于上手。
3. 存储库
pandas一个强大的数据分析库提供数据结构和数据分析工具支持多种文件格式。
SQLite一个轻量级的数据库支持SQL查询适用于小型爬虫项目。
三、7个Python爬虫小案例
接下来将分享7个Python爬虫的小案例帮助大家更好地学习和了解Python爬虫的基础知识。
1. 爬取豆瓣电影Top250
使用BeautifulSoup库爬取豆瓣电影Top250的电影名称、评分和评价人数等信息并将这些信息保存到CSV文件中。
import requests
from bs4 import BeautifulSoup
import csv# 请求URL
url https://movie.douban.com/top250
# 请求头部
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.36
}# 解析页面函数
def parse_html(html):soup BeautifulSoup(html, lxml)movie_list soup.find(ol, class_grid_view).find_all(li)for movie in movie_list:title movie.find(div, class_hd).find(span, class_title).get_text()rating_num movie.find(div, class_star).find(span, class_rating_num).get_text()comment_num movie.find(div, class_star).find_all(span)[-1].get_text()writer.writerow([title, rating_num, comment_num])# 保存数据函数
def save_data():f open(douban_movie_top250.csv, a, newline, encodingutf-8-sig)global writerwriter csv.writer(f)writer.writerow([电影名称, 评分, 评价人数])for i in range(10):url https://movie.douban.com/top250?start str(i*25) filterresponse requests.get(url, headersheaders)parse_html(response.text)f.close()if __name__ __main__:save_data()
2. 爬取猫眼电影Top100
使用正则表达式和requests库爬取猫眼电影Top100的电影名称、主演和上映时间等信息并将这些信息保存到TXT文件中。
import requests
import re# 请求URL
url https://maoyan.com/board/4
# 请求头部
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.36
}# 解析页面函数
def parse_html(html):pattern re.compile(p classnamea href.*? title(.*?) data-actboarditem-click data-val{movieId:\\\\d}(.*?)/a/p.*?p classstar(.*?)/p.*?p classreleasetime(.*?)/p, re.S)items re.findall(pattern, html)for item in items:yield {电影名称: item[1],主演: item[2].strip(),上映时间: item[3]}# 保存数据函数
def save_data():f open(maoyan_top100.txt, w, encodingutf-8)for i in range(10):url https://maoyan.com/board/4?offset str(i*10)response requests.get(url, headersheaders)for item in parse_html(response.text):f.write(str(item) \\\\n)f.close()if __name__ __main__:save_data()3. 爬取全国高校名单
使用正则表达式和requests库爬取全国高校名单并将这些信息保存到TXT文件中。
import requests
import re# 请求URL
url http://www.zuihaodaxue.com/zuihaodaxuepaiming2019.html
# 请求头部
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.36
}# 解析页面函数
def parse_html(html):pattern re.compile(tr classalt.*?td(.*?)/td.*?tddiv alignleft.*?a href(.*?) target_blank(.*?)/a/div/td.*?td(.*?)/td.*?td(.*?)/td.*?/tr, re.S)items re.findall(pattern, html)for item in items:yield {排名: item[0],学校名称: item[2],省市: item[3],总分: item[4]}# 保存数据函数
def save_data():f open(university_top100.txt, w, encodingutf-8)response requests.get(url, headersheaders)for item in parse_html(response.text):f.write(str(item) \\\\n)f.close()if __name__ __main__:save_data()
4. 爬取中国天气网城市天气
使用xpath和requests库爬取中国天气网的城市天气并将这些信息保存到CSV文件中。
import requests
from lxml import etree
import csv# 请求URL
url http://www.weather.com.cn/weather1d/101010100.shtml
# 请求头部
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.36
}# 解析页面函数
def parse_html(html):selector etree.HTML(html)city selector.xpath(//*[idaround]/div/div[1]/div[1]/h1/text())[0]temperature selector.xpath(//*[idaround]/div/div[1]/div[1]/p/i/text())[0]weather selector.xpath(//*[idaround]/div/div[1]/div[1]/p/title)[0]wind selector.xpath(//*[idaround]/div/div[1]/div[1]/p/span/text())[0]return city, temperature, weather, wind# 保存数据函数
def save_data():f open(beijing_weather.csv, w, newline, encodingutf-8-sig)writer csv.writer(f)writer.writerow([城市, 温度, 天气, 风力])for i in range(10):response requests.get(url, headersheaders)city, temperature, weather, wind parse_html(response.text)writer.writerow([city, temperature, weather, wind])f.close()if __name__ __main__:save_data()
5. 爬取当当网图书信息
使用xpath和requests库爬取当当网图书信息并将这些信息保存到CSV文件中。
import requests
from lxml import etree
import csv# 请求URL
url http://search.dangdang.com/?keyPythonactinput
# 请求头部
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.36
}# 解析页面函数
def parse_html(html):selector etree.HTML(html)book_list selector.xpath(//*[idsearch_nature_rg]/ul/li)for book in book_list:title book.xpath(a/title)[0]link book.xpath(a/href)[0]price book.xpath(p[classprice]/span[classsearch_now_price]/text())[0]author book.xpath(p[classsearch_book_author]/span[1]/a/title)[0]publish_date book.xpath(p[classsearch_book_author]/span[2]/text())[0]publisher book.xpath(p[classsearch_book_author]/span[3]/a/title)[0]yield {书名: title,链接: link,价格: price,作者: author,出版日期: publish_date,出版社: publisher}# 保存数据函数
def save_data():f open(dangdang_books.csv, w, newline, encodingutf-8-sig)writer csv.writer(f)writer.writerow([书名, 链接, 价格, 作者, 出版日期, 出版社])response requests.get(url, headersheaders)for item in parse_html(response.text):writer.writerow(item.values())f.close()if __name__ __main__:save_data()
6. 爬取百科段子
使用xpath和requests库爬取百科的段子并将这些信息保存到TXT文件中。
import requests
from lxml import etree# 请求URL
url https://www.qiushibaike.com/text/
# 请求头部
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.36
}# 解析页面函数
def parse_html(html):selector etree.HTML(html)content_list selector.xpath(//div[classcontent]/span/text())for content in content_list:yield content# 保存数据函数
def save_data():f open(qiushibaike_jokes.txt, w, encodingutf-8)for i in range(3):url https://www.qiushibaike.com/text/page/ str(i1) /response requests.get(url, headersheaders)for content in parse_html(response.text):f.write(content \\\\n)f.close()if __name__ __main__:save_data()7. 爬取新浪微博
使用selenium和requests库爬取新浪微博并将这些信息保存到TXT文件中。
import time
from selenium import webdriver
import requests# 请求URL
url https://weibo.com/
# 请求头部
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.36
}# 解析页面函数
def parse_html(html):print(html)# 保存数据函数
def save_data():f open(weibo.txt, w, encodingutf-8)browser webdriver.Chrome()browser.get(url)time.sleep(10)browser.find_element_by_name(username).send_keys(username)browser.find_element_by_name(password).send_keys(password)browser.find_element_by_class_name(W_btn_a).click()time.sleep(10)response requests.get(url, headersheaders, cookiesbrowser.get_cookies())parse_html(response.text)browser.close()f.close()if __name__ __main__:save_data()
爬虫技能在数据分析、自然语言处理等领域具有广泛的应用大家可以通过动手实践不断提高自己的技能水平。同时请注意合法合规地进行爬虫遵守相关法律法规。