Das Abrufen von Daten aus dem Internet mithilfe der Python-Sprache ist eine sehr häufige Aufgabe. Python verfügt über eine Bibliothek namens „Requests“, eine HTTP-Client-Bibliothek für Python, die zum Senden von HTTP-Anfragen an Webserver verwendet wird.
Wir können die Anforderungsbibliothek verwenden, um über den folgenden Code eine HTTP-Anfrage an die angegebene URL zu initiieren:
import requests response = requests.get('<http://www.example.com>')
Unter diesen enthält das response
-Objekt die vom Server zurückgegebene Antwort. Verwenden Sie response.text
, um den Textinhalt der Antwort abzurufen. response
对象将包含服务器返回的响应。使用 response.text
可以获取响应的文本内容。
此外,我们还可以使用以下代码获取二进制资源:
import requests response = requests.get('<http://www.example.com/image.png>') with open('image.png', 'wb') as f: f.write(response.content)
使用 response.content
可以获取服务器返回的二进制数据。
爬虫是一种自动化程序,可以通过网络爬取网页数据,并将其存储在数据库或文件中。爬虫在数据采集、信息监控、内容分析等领域有着广泛的应用。Python 语言是爬虫编写的常用语言,因为它具有简单易学、代码量少、库丰富等优点。
我们以“豆瓣电影”为例,介绍如何使用 Python 编写爬虫代码。首先,我们使用 requests 库获取网页的 HTML 代码,然后将整个代码看成一个长字符串,使用正则表达式的捕获组从字符串提取需要的内容。
豆瓣电影 Top250 页面的地址是 https://movie.douban.com/top250?start=0
,其中 start
参数表示从第几个电影开始获取。每页共展示了 25 部电影,如果要获取 Top250 数据,我们共需要访问 10 个页面,对应的地址是 https://movie.douban.com/top250?start=xxx
,这里的 xxx
如果为 0
就是第一页,如果 xxx
的值是 100
,那么我们可以访问到第五页。
我们以获取电影的标题和评分为例,代码如下所示:
import re import requests import time import random for page in range(1, 11): resp = requests.get( url=f'<https://movie.douban.com/top250?start=>{(page - 1) * 25}', headers={'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36'} ) # 通过正则表达式获取class属性为title且标签体不以&开头的span标签并用捕获组提取标签内容 pattern1 = re.compile(r'<span class="title">([^&]*?)</span>') titles = pattern1.findall(resp.text) # 通过正则表达式获取class属性为rating_num的span标签并用捕获组提取标签内容 pattern2 = re.compile(r'<span class="rating_num".*?>(.*?)</span>') ranks = pattern2.findall(resp.text) # 使用zip压缩两个列表,循环遍历所有的电影标题和评分 for title, rank in zip(titles, ranks): print(title, rank) # 随机休眠1-5秒,避免爬取页面过于频繁 time.sleep(random.random() * 4 + 1)
在上述代码中,我们通过正则表达式获取标签体为标题和评分的 span 标签,并用捕获组提取标签内容。使用 zip
压缩两个列表,循环遍历所有电影标题和评分。
许多网站对爬虫程序比较反感,因为爬虫程序会耗费掉它们很多的网络带宽,并制造很多无效的流量。为了隐匿身份,通常需要使用 IP 代理来访问网站。商业 IP 代理(如蘑菇代理、芝麻代理、快代理等)是一个好的选择,使用商业 IP 代理可以让被爬取的网站无法获取爬虫程序来源的真实 IP 地址,从而无法简单的通过 IP 地址对爬虫程序进行封禁。
以蘑菇代理为例,我们可以在该网站注册一个账号,然后购买相应的套餐来获得商业 IP 代理。蘑菇代理提供了两种接入代理的方式,分别是 API 私密代理和 HTTP 隧道代理,前者是通过请求蘑菇代理的 API 接口获取代理服务器地址,后者是直接使用统一的代理服务器 IP 和端口。
使用 IP 代理的代码如下所示:
import requests proxies = { 'http': '<http://username:password@ip>:port', 'https': '<https://username:password@ip>:port' } response = requests.get('<http://www.example.com>', proxies=proxies)
其中,username
和 password
分别是蘑菇代理账号的用户名和密码,ip
和 port
response.content
, um die vom Server zurückgegebenen Binärdaten abzurufen. 🎜🎜Crawler-Code schreiben🎜🎜Ein Crawler ist ein automatisiertes Programm, das Webseitendaten durch das Netzwerk crawlt und sie in einer Datenbank oder Datei speichert. Crawler werden häufig in der Datenerfassung, Informationsüberwachung, Inhaltsanalyse und anderen Bereichen eingesetzt. Die Python-Sprache ist eine häufig verwendete Sprache zum Schreiben von Crawlern, da sie die Vorteile hat, dass sie leicht zu erlernen ist, nur wenig Code enthält und über umfangreiche Bibliotheken verfügt. 🎜🎜Wir nehmen „Douban Movie“ als Beispiel, um vorzustellen, wie man mit Python Crawler-Code schreibt. Zuerst verwenden wir die Anforderungsbibliothek, um den HTML-Code der Webseite abzurufen, behandeln dann den gesamten Code als lange Zeichenfolge und verwenden die Erfassungsgruppe des regulären Ausdrucks, um den erforderlichen Inhalt aus der Zeichenfolge zu extrahieren. 🎜🎜Die Adresse der Douban Movie Top250-Seite lautet https://movie.douban.com/top250?start=0
, wobei der Parameter start
angibt, welcher Film gestartet werden soll aus. . Auf jeder Seite werden insgesamt 25 Filme angezeigt. Wenn wir die Top250-Daten erhalten möchten, müssen wir insgesamt 10 Seiten besuchen. Die entsprechende Adresse lautet https://movie.douban.com/top250?start =xxx
. Wenn xxx
hier 0
ist, ist es die erste Seite. Wenn der Wert von xxx
100 ist
, dann können wir auf Seite fünf zugreifen. 🎜🎜Wir nehmen als Beispiel das Abrufen des Titels und der Bewertung eines Films. Der Code lautet wie folgt: 🎜rrreee🎜Im obigen Code verwenden wir reguläre Ausdrücke, um das Span-Tag abzurufen, dessen Tag-Körper der Titel und die Bewertung sind, und verwenden eine Capture-Gruppe zum Extrahieren des Tag-Inhalts. Verwenden Sie zip
, um die beiden Listen zu komprimieren und alle Filmtitel und Bewertungen durchzugehen. 🎜🎜Verwenden Sie einen IP-Proxy🎜🎜Viele Websites sind von Crawlern abgeneigt, da Crawler einen Großteil ihrer Netzwerkbandbreite verbrauchen und viel ungültigen Datenverkehr erzeugen. Um Ihre Identität zu verbergen, müssen Sie normalerweise einen IP-Proxy verwenden, um auf die Website zuzugreifen. Kommerzielle IP-Proxys (wie Mushroom Proxy, Sesame Proxy, Fast Proxy usw.) sind eine gute Wahl. Die Verwendung kommerzieller IP-Proxys kann verhindern, dass die gecrawlte Website die echte IP-Adresse der Quelle des Crawler-Programms erhält, was dies unmöglich macht Verwenden Sie einfach die IP-Adresse. Das Crawler-Programm wird blockiert. 🎜🎜 Am Beispiel von Mushroom Agent können wir ein Konto auf der Website registrieren und dann das entsprechende Paket erwerben, um einen kommerziellen IP-Agenten zu erhalten. Der Pilz-Proxy bietet zwei Möglichkeiten, auf den Proxy zuzugreifen, nämlich den privaten API-Proxy und den HTTP-Tunnel-Proxy. Ersterer erhält die Proxy-Server-Adresse durch Anfordern der API-Schnittstelle des Pilz-Proxys, und letzterer verwendet direkt die IP und den Port des einheitlichen Proxy-Servers. 🎜🎜Der Code für die Verwendung des IP-Proxys lautet wie folgt: 🎜rrreee🎜Unter diesen sind username
und password
der Benutzername bzw. das Passwort des Mushroom-Proxy-Kontos, ip
und port
sind die IP-Adresse bzw. die Portnummer des Proxyservers. Beachten Sie, dass verschiedene Proxy-Anbieter möglicherweise unterschiedliche Zugriffsmethoden haben und entsprechend der tatsächlichen Situation angepasst werden müssen. 🎜Das obige ist der detaillierte Inhalt vonSo erhalten Sie Netzwerkdaten mit dem Python-Webcrawler. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!