Python 为什么';与本地网站合作?
我对urllib有一个问题,在这个问题上,我似乎无法刮取我自己的本地网站。我可以让它打印出网站的所有内容,但正则表达式或其他东西不起作用。我用当前代码得到的输出只是Python 为什么';与本地网站合作?,python,html,regex,html-parsing,urllib,Python,Html,Regex,Html Parsing,Urllib,我对urllib有一个问题,在这个问题上,我似乎无法刮取我自己的本地网站。我可以让它打印出网站的所有内容,但正则表达式或其他东西不起作用。我用当前代码得到的输出只是[]。所以我想知道我做错了什么?我已经有一段时间没有使用urllib了,所以很可能我错过了一些明显的东西。Python文件: import urllib import re htmlfile=urllib.urlopen('IP of server') htmltext=htmlfile.read() regex="<body
[]
。所以我想知道我做错了什么?我已经有一段时间没有使用urllib了,所以很可能我错过了一些明显的东西。Python文件:
import urllib
import re
htmlfile=urllib.urlopen('IP of server')
htmltext=htmlfile.read()
regex="<body>(.+?)</body>"
pattern=re.compile(regex)
price=re.findall(pattern,htmltext)
print price
导入urllib
进口稀土
htmlfile=urllib.urlopen('服务器的IP')
htmltext=htmlfile.read()
regex=“(.+?)”
pattern=re.compile(regex)
price=re.findall(模式,htmltext)
印刷价格
HTML文件:
<html>
<body>
This is a basic HTML file to try to get my python file to work...
</body>
</html>
这是一个基本的HTML文件,试图让我的python文件工作。。。
提前多谢 点
不匹配换行符,除非您设置点匹配所有s
修改器:
re.compile('<body>(.+?)</body>', re.DOTALL)
re.compile(“(.+?)”,re.DOTALL)
点
不匹配换行符,除非您将点设置为与所有s
修饰符匹配:
re.compile('<body>(.+?)</body>', re.DOTALL)
re.compile(“(.+?)”,re.DOTALL)
这里有一些地方出错。您需要启用“点所有”修改器,该修改器强制点跨越换行符序列。对于包含已编译正则表达式和对findall
的调用的以下行,它应该是:
regex = "<body>(.+?)</body>"
pattern = re.compile(regex, re.DOTALL)
price = pattern.findall(htmltext)
regex=“(.+?)”
pattern=re.compile(regex,re.DOTALL)
price=pattern.findall(htmltext)
可以简化如下,我建议从匹配结果中删除空白
price = re.findall(r'(?s)<body>\s*(.+?)\s*</body>', htmltext)
price=re.findall(r'(?s)\s*(.+?)\s*,htmltext)
为了便于将来参考,请使用诸如BeautifulSoup之类的解析器来提取数据,而不是正则表达式。这里有一些错误。您需要启用“点所有”修改器,该修改器强制点跨越换行符序列。对于包含已编译正则表达式和对
findall
的调用的以下行,它应该是:
regex = "<body>(.+?)</body>"
pattern = re.compile(regex, re.DOTALL)
price = pattern.findall(htmltext)
regex=“(.+?)”
pattern=re.compile(regex,re.DOTALL)
price=pattern.findall(htmltext)
可以简化如下,我建议从匹配结果中删除空白
price = re.findall(r'(?s)<body>\s*(.+?)\s*</body>', htmltext)
price=re.findall(r'(?s)\s*(.+?)\s*,htmltext)
作为将来的参考,请使用诸如BeautifulSoup之类的解析器来提取数据,而不是正则表达式。或者,实际上,这是一种方法-使用HTML解析器 示例(使用):
>>来自bs4导入组
>>>
>>>data=”“”
...
...
…这是一个基本的HTML文件,用于尝试使我的python文件正常工作。。。
...
...
... """
>>>汤=美汤(数据)
>>>打印soup.body.get_文本(strip=True)
这是一个基本的HTML文件,试图让我的python文件工作。。。
请注意,代码是多么简单,没有“regex魔力”。或者,实际上,这是使用HTML解析器 示例(使用):
>>来自bs4导入组
>>>
>>>data=”“”
...
...
…这是一个基本的HTML文件,用于尝试使我的python文件正常工作。。。
...
...
... """
>>>汤=美汤(数据)
>>>打印soup.body.get_文本(strip=True)
这是一个基本的HTML文件,试图让我的python文件工作。。。
请注意,代码是多么简单,没有“regex魔法”。
“我可以让它打印出网站的所有内容”
然后urllib
工作正常。使用beautifulsoup解析html“我可以让它打印出网站的所有内容”
Thenurllib
工作正常。使用beautifulsoup解析htmlI太懒了,无法编写此+1;)我试过BeatifulSoup,但它没有找到我的本地IP。@user3818089 nono,BeautifulSoup
是一个解析器,为它提供smth来解析HTTP请求,你需要使用urllib
或urllib2
或请求
。所以我仍然会这样做htmlfile=urllib.urlopen(“服务器的IP”)
并将其插入soup=beautifulsou(htmlfile)
?谢谢@user3818089我会使用urllib2
而不是urllib
,但是是的,没错。我太懒了,没有写这个+1;)我试过BeatifulSoup,但它没有找到我的本地IP。@user3818089 nono,BeautifulSoup
是一个解析器,为它提供smth来解析HTTP请求,你需要使用urllib
或urllib2
或请求
。所以我仍然会这样做htmlfile=urllib.urlopen(“服务器的IP”)
并将其插入soup=beautifulsou(htmlfile)
?谢谢@user3818089我会使用urllib2
而不是urllib
,但没错。