Python .encode(';utf-8';)完全没有做任何事情

Python .encode(';utf-8';)完全没有做任何事情,python,regex,web-scraping,automation,Python,Regex,Web Scraping,Automation,一些背景 我正在为一个朋友的生意做一个小程序。在他的业务中,他会手动浏览一个网站,该网站上有他合作的公司网站列表。名单上有数百家公司。他所做的就是获取联系人信息并将其输入excel 再一次,他是手工做的。。。他说他会花几个小时做这件事 我想尝试用Python自动化这个过程。我自学了大约一个月的经验 现在,我有一个程序,成功地抓取了一个网站的文字。但是,它将文本放入unicode字符串列表中,但由于某些原因,它不会将列表转换为utf-8以便我可以使用它 import re import urlli

一些背景

我正在为一个朋友的生意做一个小程序。在他的业务中,他会手动浏览一个网站,该网站上有他合作的公司网站列表。名单上有数百家公司。他所做的就是获取联系人信息并将其输入excel

再一次,他是手工做的。。。他说他会花几个小时做这件事

我想尝试用Python自动化这个过程。我自学了大约一个月的经验

现在,我有一个程序,成功地抓取了一个网站的文字。但是,它将文本放入unicode字符串列表中,但由于某些原因,它不会将列表转换为utf-8以便我可以使用它

import re
import urllib
from bs4 import BeautifulSoup

#url = raw_input("Please enter a url: ")

html = urllib.urlopen("http://www.cerecor.com/contact")
soup = BeautifulSoup(html, "lxml")
data = soup.findAll(text=True)

def visible(element):
    if element.parent.name in ['style', 'script', '[document]', 'head', 'title']:
        return False
    elif re.match('<!--.*-->', str(element.encode('utf-8'))):
        return False
    return True

result = filter(visible, data)

[x.encode('UTF8') for x in result]
#result = ','.join(result)
number = u"(\+?1?.?\d{3}[-\.\s]??\d{3}[-\.\s]??\d{4}|\(\d{3}\)\s*\d{3}[-
\.\s]??\d{4}|\d{3}[-\.\s]??\d{4})"

print result

#numbers = [re.findall(number, x) for x in result]
重新导入
导入URL库
从bs4导入BeautifulSoup
#url=原始输入(“请输入url:”)
html=urllib.urlopen(“http://www.cerecor.com/contact")
soup=BeautifulSoup(html,“lxml”)
data=soup.findAll(text=True)
def可见(元素):
如果['style','script','document','head','title']中的element.parent.name:
返回错误
elif重新匹配(“”,str(元素编码('utf-8')):
返回错误
返回真值
结果=过滤器(可见,数据)
[x.encode('UTF8')表示结果中的x]
#结果=','。连接(结果)
数字=u“(\+-1?)\d{3}[-\.\s]??\d{3}[-\.\s]??\d{4}\\(\d{3}\)\s*\d{3}[-
\.\s]??\d{4}\d{3}[-\.\s]??\d{4})”
打印结果
#numbers=[re.findall(number,x)表示结果中的x]
以及输出 [u'',SU'\n',u'',u'\n',u'\n',u'\n',u'\n',u'\n',u'\n',u'\n',u'\n',u'\n',u'\n',u'\n',u'\n' \n',u'Home',u'\n',u'\n',u'About',u'\n',u'Overview',u'\n',u'Management Team',u'\n',u'董事会',u'\n',u' u'Pipeline',u'\n',u'\n',u'Overview',u'\n',u'CERC-301',u'\n',u'CERC-611',u'\n',u'CERC-406',u'\n',u'相关出版物 '',u'\n',u'Patient Resources',u'\n',u'\n',u'Investors',u'\n',u'\n',u'Overview',u'\n',u'News/Events',u'\n',u'C' ,u'\n',u'Analyst Coverage',u'\n',u'Stock Data',u'\n',u'SEC文件,u'\n',u'Corporate Governance',u'\n',u'\n',u'',u' s',u'\n',u'\n',u'Careers',u'\n',u'\n',u'Contact',u'\n',u'\n',u'\n',u'\n',u'\n',u'\n',u'\n',u'\n',, s',u'\n',u“我们很想听到你的消息”,u'\n',u'\n',u'\n',u'\n',u'\n',u'\n',u'\n',u'\n',u'\n',u'\n',u'\n',u'\n',u'\n', n',u'Name',u'\n',u'\n',u'\n',u'\n',u'\n',u'\n',u'\n',u'\n',u'\n',u'Company',u'\n',u'\n',u'\n',u'\n '、u'\n',u'\n',u'Select Option',u'\n',u'General inquerys',u'\n',u'Partnerships',u'\n',u'Licensing',u'\n',u'Public Relat 投资者关系,u'\n',u'\n',u'\n',u'\n',u'Message',u'\n',u'\n',u'\n',u'\n',u'\n',u'\n',u'\n',u'\n',u'\n',u'\n',u'\n',u ,u'\n',u'\n',u'\n',u'Cerecor,Inc.,u'\n',u'\r\n,u'Su东普拉特街400号 \t\tBaltimore,MD 21202\t\t',u'\n',u'\r\n\t 电话:410-522-8707\r\n\t\t',u'\n',u'\n',u'\n',u'\n',u'\n',u'\n',u'\n',u'\n',u'\n', n',u'\n',u'\n',u'\n',u'\n',u'About us',u'\n',u'\n',u'\n',u'\n',u'\n',u'Pipeline',u'\n',u'\n',u'\n',u'\n',u' u'\n',u'\n',u'\n',u'\n',u'\n',u'\n',u'\n',u'\r\n\t\t\t\xa9 2017',u'Cerecor,Inc.,u'',u'\n',u'\n',u'\n',u'\n',u'隐私 免责声明,u'\n',u'Sitemap',u'\n',u'\n',u'\n',u'\n',u'\n',u'\n',u'\n',u'//general wrapper',u'\n',u'\n']


任何和所有的建议都会有帮助。我只想把它归结为一个包含所有文本的字符串或一个列表,这样我就可以用正则表达式搜索它。

因为字符串类型在python中是不可变的,
x.encode()
不会修改unicode字符串,而是返回编码版本

您可以尝试:

result = [x.encode('UTF8') for x in result]

默认编码已经是UTF-8。。。请参阅:您应该确保正则表达式模式的类型与字符串的类型相同。在你的例子中,数字是unicode,而x是str(字节)。是的,你是对的,我把它放在unicode中只是为了摆弄它,因为我不明白他们为什么不转换成字符串。你是个救生员。总是最简单的事情阻碍了你的发展,再次感谢!