如何使我的 python 代码请求 URL 并根据需要从网页上抓取信息
How to make my python code request a URL and scrape information as per need from the webpage
我正在使用一个简单的 python 代码来尝试获取 URL 并删除每个网页中提到的所有其他 URL(所有 html 子- 那个 URL 的 home/root 页面下的页面(如果有的话)。这是我的代码:
import urllib
import urllib2
import re
import socks
import socket
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 9050)
socket.socket = socks.socksocket
req = urllib2.Request('http://www.python.org')
#connect to a URL
try:
website = urllib2.urlopen(req)
except urllib2.URLError as e:
print "Error Reason:" ,e.reason
else:
#read html code
html = website.read()
#use re.findall to get all the links
links = re.findall('"((http|ftp)s?://.*?)"', html)
print links
现在我收到一个简单的错误,其中无法识别模块 socks。我发现我必须将 "socks.py" 复制到 Python 的 lib/site-packages 目录下的正确路径中。
我已将 socks 模块添加到我的代码中,因为我的 python 脚本无法连接到 url http://www.python.org
。我的问题是我是否正确使用了 socks
?
我的脚本还会处理根 url 下的所有网页吗?因为我想从 URL.
根目录下的所有此类网页中抓取所有 urls
另外,我如何检查在我的代码的 setdefaultproxy
行中提到的 port
是什么?
我建议您使用 BeautifulSoup 进行网络抓取。下面是它的代码,方法更简单。
import requests
from bs4 import BeautifulSoup
r=requests.get("http://www.python.org")
c=r.content
soup=BeautifulSoup(c,"html.parser")
anchor_list=[a['href'] for a in soup.find_all('a', href=True) if a.text.strip()]
print(anchor_list)
希望对您有所帮助!
我正在使用一个简单的 python 代码来尝试获取 URL 并删除每个网页中提到的所有其他 URL(所有 html 子- 那个 URL 的 home/root 页面下的页面(如果有的话)。这是我的代码:
import urllib
import urllib2
import re
import socks
import socket
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 9050)
socket.socket = socks.socksocket
req = urllib2.Request('http://www.python.org')
#connect to a URL
try:
website = urllib2.urlopen(req)
except urllib2.URLError as e:
print "Error Reason:" ,e.reason
else:
#read html code
html = website.read()
#use re.findall to get all the links
links = re.findall('"((http|ftp)s?://.*?)"', html)
print links
现在我收到一个简单的错误,其中无法识别模块 socks。我发现我必须将 "socks.py" 复制到 Python 的 lib/site-packages 目录下的正确路径中。
我已将 socks 模块添加到我的代码中,因为我的 python 脚本无法连接到 url http://www.python.org
。我的问题是我是否正确使用了 socks
?
我的脚本还会处理根 url 下的所有网页吗?因为我想从 URL.
根目录下的所有此类网页中抓取所有urls
另外,我如何检查在我的代码的 setdefaultproxy
行中提到的 port
是什么?
我建议您使用 BeautifulSoup 进行网络抓取。下面是它的代码,方法更简单。
import requests
from bs4 import BeautifulSoup
r=requests.get("http://www.python.org")
c=r.content
soup=BeautifulSoup(c,"html.parser")
anchor_list=[a['href'] for a in soup.find_all('a', href=True) if a.text.strip()]
print(anchor_list)
希望对您有所帮助!